コードがSilverlightユニットテストフレームワークアセンブリから実行されているかどうかを判断する方法はありますか? (コンテキストのために、私たちはユニットテストプロジェクトを実行している場合FakeDomainClient にDomainClientを結合し、それ以外WebDomainClientにバインドするNinjectModuleを作成するために期待しています。)一部のコードがSilverlightユニットテストフレームワーク内で実行されているかどうかを確認する方法はありますか?
答えて
それはビットの粗だが、一つの可能性System.Windows.Application.Current.Host.Sourceの1つのプロパティ(たぶんLocalPath)をテストすることです。ホスティングXAPファイルがテストプロジェクトのXAPかどうか、またはアプリケーションのXAPかどうかをテストする必要があります。これは明白にXAPファイル名を仮定しています。名前空間から何かを派生させたとしても、XAPファイル名は実際にはプロジェクトプロパティで設定可能です(常に一致する保証はありません)。 )。
また、System.Windows.Application.Current.RootVisualの値をテストすることもできます。ここでも、Silverlightユニットテストフレームワークの将来のバージョンで、同じMicrosoft.Silverlight.Testing.Client.TestPageを使用するという保証はないことを念頭に置いておく必要があります。たとえば、アプリケーションクラスは、少なくとも、必要に応じて将来の拡張メソッドに変更を限定することを意味します)。
もう1つの方法は、HTML Bridgeを使用して、System.Windows.Browser.HtmlPage.Document.DocumentUriのプロパティのいずれかをテストすることです。これは最初の2つのオプションよりも悪いようです。なぜなら、uris /ページ名のホストに関する仮定は、アプリケーションに使用される特定のUIElementまたはXAPファイルの名前に関する仮定よりも悪化する可能性が高いからです。
XAPファイル名またはホストページ名に基づいたソリューションは、複数のモジュール/プロジェクトにわたるテストでテクニックを使用したいので、多分どんな場合でもコンベンションベースの名前に依存する必要があります。
もっと良い方法は、おそらくSystem.Windows.Application.Current.Host.InitParamsを使用することです。テストプロジェクト内のページに特定のパラメータを渡す可能性があり、最終的にコードがその特定のパラメータの値をテストするようにすることができます。これには、XAPファイル名やURI /ページ名に特定のRootVisualや特定の命名規則を必要としないという利点があります。
うわー!デレクありがとう!このようにする必要がある場合は、2番目の選択肢が最善であるように感じます。しかし、私は単体テストの戦略を、Remoが以下に示唆しているように変更しました。私は時間があれば、あなたの提案がどのように行われるかの例を投稿します。再度、感謝します! –
最良の方法は、実例コードで使用するインスタンスを決定するのではなく、テストでDomainClientを再バインドできる優れた設計を持つことによって、これをまったく知る必要がないことです。これにより、プロダクションコードにテストコードがなくなり、奇妙な例外が発生する可能性が少なくなります。
静的プロパティUnitTestRunningを持つ静的クラスを作成するには、デフォルトではfalseで、テスト初期化子でtrueに設定され、モジュールで読み取られることがあります。
ちょっとレモ!テストでDomainClientを再バインドできる方が良いと私は確信しています。私は自分のコードでそれを行う方法を理解し、それに応じてそれを変更しました。アドバイスありがとうございます! –
- 1. Silverlightアプリケーションがローカルで実行されているかどうかを確認する方法?
- 2. コードがVisual Studio/Cassiniからローカルで実行されているかどうかを確認する方法
- 3. GWTアプリがフレーム/ iframe内で実行されているかどうかを確認する方法は?
- 4. PHPファイルが `phar`アーカイブの一部として実行されているかどうかを確認する
- 5. iPhoneアプリでボタンが押されているかどうかを確認する方法はありますか?
- 6. UIViewControllerが表示されているかどうかを確認する良い方法はありますか?
- 7. コードが64ビットマシンでコンパイルされているかどうかを確認するGCCプリプロセッサディレクティブはありますか?
- 8. VMがサーバーモードまたはクライアントモードで実行されているかどうかを確認する方法は?
- 9. バッチファイルから、プログラムがインストールされているかどうかを確認する方法はありますか?
- 10. は、performSelector:withObject:afterDelay:が登録されているかどうかを確認する方法はありますか?
- 11. SilverlightのDataGridにフォーカスがあるかどうかを確認する方法はありますか?
- 12. Pythonのsetuptoolsがインストールされているかどうかを確認する方法はありますか?
- 13. コンボボックスのドロップダウンリストが表示されているかどうかを確認する方法はありますか?
- 14. スクリプトがdofile()でインクルードされているかどうか、またはLuaで直接実行されているかどうかを確認する方法は?
- 15. カーネルがCUDAで実行されたかどうかを確認する方法
- 16. サービスが32または64ビットモードで実行されているかどうかを確認する方法
- 17. ベロシティ:変数が定義されているかどうかを確認する方法はありますか
- 18. システムキャレットが表示されているかどうかを確認する方法はありますか?
- 19. フラッシュがインストールされているかどうかを確認する方法はありますか?
- 20. Primefaces RadioCheckboxがチェックされているかどうかを確認する方法はありますか?
- 21. QML要素がロードされているかどうかを確認する方法はありますか?
- 22. フルスクリーンアプリケーションが実行されているかどうかを確認するには?
- 23. スクリーンセーバーが実行されているかどうかを確認するには?
- 24. アプリケーションが実行中かどうかを確認する方法
- 25. コードがタスクキューから実行されているかどうかを確実に検出する方法はありますか?
- 26. opcodeキャッシュがサーバー上で実行されているかどうかを確認する方法は?
- 27. UDIDがビルドに含まれているかどうかを確認する方法はありますか?
- 28. ダブルに小数部分があるかどうかを確認する方法はありますか?
- 29. アプリが一部の組織でインストールされているかどうかは確認できますか?
- 30. gdb:メモリの一部が読み取り専用であるかどうかを確認する方法
+1 NB私たちはポストに「おかげで前もって」置いていません、私たちは助けてくれる答えをupvote –