コードが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. eval()内でコードが実行されているかどうかを確認する方法は?
- 2. cudaコードがリロケータブルデバイスコードでコンパイルされているかどうかを確認する方法はありますか?
- 3. スクリプトエンジンで実行されているGroovyコード内に変数が存在するかどうかを確認する方法はありますか?
- 4. Silverlightアプリケーションがローカルで実行されているかどうかを確認する方法?
- 5. コードがVisual Studio/Cassiniからローカルで実行されているかどうかを確認する方法
- 6. GWTアプリがフレーム/ iframe内で実行されているかどうかを確認する方法は?
- 7. SilverlightのDataGridにフォーカスがあるかどうかを確認する方法はありますか?
- 8. PHPファイルが `phar`アーカイブの一部として実行されているかどうかを確認する
- 9. 実行中のMicrosoft C++コードが/ EHaスイッチでコンパイルされているかどうかを確認する方法はありますか?
- 10. AUTOLISPでSHIFTが押されているかどうかを確認する方法はありますか?
- 11. iPhoneアプリでボタンが押されているかどうかを確認する方法はありますか?
- 12. クラスがPythonでインスタンス化されているかどうかを確認する方法はありますか?
- 13. コードが64ビットマシンでコンパイルされているかどうかを確認するGCCプリプロセッサディレクティブはありますか?
- 14. バッチファイルから、プログラムがインストールされているかどうかを確認する方法はありますか?
- 15. Azure関数がスロット内で実行されているかどうかを確認する方法
- 16. UIViewControllerが表示されているかどうかを確認する良い方法はありますか?
- 17. は、performSelector:withObject:afterDelay:が登録されているかどうかを確認する方法はありますか?
- 18. コンボボックスのドロップダウンリストが表示されているかどうかを確認する方法はありますか?
- 19. 特定のアドインがインストールされているかどうかを確認する方法はありますか?
- 20. Pythonのsetuptoolsがインストールされているかどうかを確認する方法はありますか?
- 21. VMがサーバーモードまたはクライアントモードで実行されているかどうかを確認する方法は?
- 22. スクリプトがdofile()でインクルードされているかどうか、またはLuaで直接実行されているかどうかを確認する方法は?
- 23. カーネルがCUDAで実行されたかどうかを確認する方法
- 24. メンバーにモックが設定されているかどうかを確認する方法はありますか?
- 25. シンボルが引用されているかどうかを確認する方法はありますか?
- 26. OSにプログラム/パッケージがインストールされているかどうかを確認する方法はありますか?
- 27. ベロシティ:変数が定義されているかどうかを確認する方法はありますか
- 28. フラッシュがインストールされているかどうかを確認する方法はありますか?
- 29. システムキャレットが表示されているかどうかを確認する方法はありますか?
- 30. Primefaces RadioCheckboxがチェックされているかどうかを確認する方法はありますか?
+1 NB私たちはポストに「おかげで前もって」置いていません、私たちは助けてくれる答えをupvote –