信頼できるサービス/アクタをコンストラクタを呼び出してテストすることはできません。 var testService = new SomeService();
はNullReferenceExceptionをスローします。だから私は、私が展開SF信頼性の高いサービス/アクターが標準の.NETクラス、および展開S/A多分奇妙なアイデアのユニットテストではないことを理解しサービスファブリックユニットのテストと依存性注入
..展開サービスで何を行うことができます。
とにかく私はそれを試してみようとしています。
たとえば、私はサービスを実装したばかりです。テストでは、プロキシオブジェクトを作成し、項目をサービスの入力キューに追加しました。次に、入力キューの数を1にする必要があります。サービスをデプロイしたばかりで、他のクライアント/サービス/アクターが入力キューを使用していない場合に機能します。しかし、次回はこのテストは失敗しますが、それは問題です。私は他の消費者とのオペレーションをやめ、それをキューに入れてテストするよりもサービスを停止する必要があります。この目的のために、いくつかのTestModeプロパティとPropareoForTests/TestingCompletedのようないくつかのメソッドを作成し、テストの前と後にテストクライアントから呼び出すことができます。
このようにするのは悪い考えですか?おそらくユニットテストSFのためのいくつかのガイドラインはありますか?ありがとう。
UPDATE:Service Fabric Web Reference Application exampleを調査している間
私はこのTODO文字列を見つけた:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
それはSFサービスは、それがDIのサポートだ改善されることを意味していますか?俳優はどうですか?
実際にアクタでコンストラクタ依存性注入が利用可能になりました!あなたのアクタータイプを登録するときには、アクタークラスインスタンスを作成する実際のFunc <>である "ファクトリ"を登録することもできます。サービスでは、すでにこれを行うことができます。パーティクルクラスのサンプルでは、どのように行うのかを確認してください:https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster/ ClusterService –
私は1との依存性注入を行う際の答えを書いた:http://stackoverflow.com/questions/30384780/azure-service-fabric-actor-dependency-injection/35900027#35900027 –
@VaclavTurecekあなたのリンクが壊れている – Dismissile