有沒有辦法告訴在執行期間是否從Silverlight單元測試框架程序集運行代碼? (對於背景下,我希望創造一個NinjectModule 如果我們正在運行的單元測試工程將結合DomainClient到FakeDomainClient,但結合到WebDomainClient除外。)有沒有辦法判斷某些代碼是否在Silverlight單元測試框架內執行?
回答
這是一個有點粗糙,但一個可能性將從System.Windows.Application.Current.Host.Source測試其中一個屬性(可能是LocalPath)。您需要測試宿主XAP文件是否來自您的測試項目的XAP,或者它是否是您的應用程序的XAP。這顯然會對XAP文件名作出假設,這使得它變得有點脆弱(即使從名稱空間派生出某些東西,XAP文件名在任何情況下都可以在項目屬性中實際配置 - 所以不能保證它始終匹配)。
或者,你可以測試System.Windows.Application.Current.RootVisual的價值。同樣,您當然需要記住,不能保證Silverlight單元測試框架的未來版本將使用相同的Microsoft.Silverlight.Testing.Client.TestPage(儘管將檢查可能作爲靜態擴展方法用於例如,應用程序類至少意味着您可以根據需要在未來將更改限制在您的擴展方法中)。
另一種方法是使用HTML橋和測試從System.Windows.Browser.HtmlPage.Document.DocumentUri的屬性之一。這看起來比前兩個選項差,因爲關於託管uris /頁面名稱的假設可能會比關於用於應用程序的特定UIElement或XAP文件的名稱的假設更差。
根據各地XAP文件名或託管的網頁名稱的任何解決方案可能會需要依靠以公約爲基礎的名字在任何情況下,如你所要使用的技術,在多個模塊/項目的測試。
一個更好的選擇可能是使用System.Windows.Application.Current.Host.InitParams。您可能會在測試項目中的頁面中傳遞特定的參數,並最終讓您的代碼測試該特定參數的值。這具有的優點是,它不需要任何特定的RootVisual或任何特定的命名約定用於XAP文件名或uri /頁面名稱。
的幫助!哇!謝謝你Derek!對我而言,如果我仍然需要這樣做,第二種選擇將是最好的。不過,我已經將我的單元測試策略轉換爲更多類似於下面的建議。如果我有一些時間,我會舉一個例子說明你的建議可以如何完成。再次感謝! – 2010-11-29 20:49:51
最好的辦法就是不要有由具有良好的設計,可以讓你重新綁定DomainClient在測試中,而不是在你的產品代碼應該使用哪個實例決定都知道這一點。這使您的生產代碼免於測試代碼,並減少奇怪異常的機會。
一個黑客將創建一個靜態類,靜態屬性UnitTestRunning即默認爲false,並在測試初始化設置爲true,並在模塊中讀取。
嘿雷莫!我絕對同意你的看法,在我的測試中能夠重新綁定DomainClient更好。我意識到我可以在代碼中做到這一點,我相應地改變了它。謝謝你的建議! – 2010-11-29 20:50:31
- 1. 有沒有辦法判斷java中是否有代碼沒有被使用?
- 2. Rascal是否有單元測試框架?
- 3. 有沒有辦法檢查代碼是否在TransactionScope中執行?
- 4. 有沒有辦法判斷聲音是否正在播放?
- 5. 有沒有辦法同時運行C++單元測試測試?
- 6. 有沒有辦法測試瀏覽器是否支持flash/silverlight?
- 7. 有沒有辦法判斷所有驗證器是否滿足?
- 8. 是否有單元測試xml以外的替代框架xmlunit?
- 9. 有沒有辦法判斷x-sendfile是否已經啓動?
- 10. 有沒有辦法判斷ReactElement是否呈現「null」?
- 11. 有沒有辦法判斷是否收到LocalBroadcastManager廣播?
- 12. 有沒有辦法判斷是否顯示軟鍵盤?
- 13. 有沒有辦法判斷Safari是否全屏? (例如document.fullscreenElement)
- 14. 有沒有辦法判斷默認流是否打開?
- 15. 有沒有辦法判斷一個活動是否開始?
- 16. JSR 352:有沒有辦法從作業中判斷某個特定作業的執行是否重啓?
- 17. 有沒有辦法判斷sdcard是否已安裝或根本沒有安裝?
- 18. 有沒有辦法進行單元測試unobstrusive jQuery的場景
- 19. 使用JSch,有沒有辦法判斷一個遠程文件是否存在,而不是執行ls?
- 20. 有沒有辦法來檢查某個斷言是否失敗
- 21. 有沒有辦法單元測試用Python編寫的Gtk/GLib代碼?
- 22. 是否有可能使用基於Python的單元測試框架和運行器來測試C代碼
- 23. 有沒有辦法判斷我的代碼是在Apple Watch Simulator中還是在真正的手錶上運行
- 24. 有沒有辦法在TestCase之外使用Python單元測試斷言?
- 25. 有沒有辦法判斷對象是類還是對象?
- 26. 有沒有辦法通過tearDown()來判斷我的PHPUnit測試用例是否有失敗?
- 27. Silverlight的單元測試框架重新運行測試
- 28. 如何判斷你是否在Python的單元測試中?
- 29. 有沒有辦法通過Greasemonkey在命名框架(而不是所有框架)中運行我的JS代碼?
- 30. MSTest&Silverlight單元測試框架教程
+1 NB我們不在帖子中寫上「提前致謝」,我們讚揚 – 2011-02-08 23:27:56