VS 2012 で WCF サービス アプリケーション プロジェクトを作成しました。サービスを実装しました。
ここにそれがどのように見えるかがあります:
今、私は対処すべき根本的な問題を抱えています。より多くの TDD といくつかの TAD テストを作成するために、新しいテスト プロジェクトを作成しました。TAD (実装後のテスト) テストはサービスの実装をテストし、TDD テストは WCF サービス インターフェイスのモックに依存してテストします。
ここで、サービスの実装を使用してテストする必要がある TAD テストに戻ります。サービス参照を追加し、TAD の単体テストで clientProxy を使用していると思います。
そこで、新しい C# プロジェクトにサービス参照を追加します。次に、次のようないくつかのテストを作成し続けます。
[TestMethod]
public void Get_CalledViaClientProxy_ReturnsNonNullList()
{
var serviceClient = new CarsClient();
// Act
Cars[] events = serviceClient.Get();
// Assert
Assert.IsNotNull(events);
}
これを実行すると、実際のサービスが実行されていないため失敗します。そこで、実際の Service WCF プロジェクトに戻り、サービス (.svc) を右クリックしてブラウザーで開くことを選択すると、IIS Express の下でサービスも開始されます。その後、私のテストは正常に実行されます。
それから、どうすればこれをより自動化できますか。別の開発者がこのコードをダウンロードすると、それらのテストが実行され、サービスが何らかの形で開始されます。サービス プロジェクトをスタートアップ プロジェクトとして設定しようとしましたが、ブラウザを開いてそのプロジェクトのファイル システムを表示するだけです。
IIS 以外でテストのためにサービスを実行するにはどうすればよいですか? 開発者向けに機能するようにしますか?単純にサービスを実行できず、何とか F5 キーを押しても、テスト プロジェクトに戻って単体テストを実行できる場合、これは無意味です。
「WCF サービス アプリケーション」プロジェクトをスタートアップ プロジェクトに設定しようとすると、サービスを開始してコンソール ウィンドウを表示する代わりに、サービスの Web ページが開きます。WCF プロジェクトの種類が間違っていますか? 「サービス アプリケーション」プロジェクトがあるため、Web タブがあることに気付きました。単に VS でプロジェクトを開始し、この実行中のサービスを利用する他のプロジェクトでコーディングを続けたい場合は、何か他のものを使用する必要がありますか?
私がいた前の会社では、WCF サービス プロジェクトに "-d" を入れていました。プロジェクトを実行すると、サービスが開始され、コンソール ウィンドウが実行され、そこに座っているだけで、サービスが実行されていることがわかりました。それに対してTAD単体テストを書き続けている間
例えば:
ただし、私のWCFプロジェクトは「WCFアプリケーションサービス」であるため、正確なデバッグタブがありません私は行ってきました。おそらくそれは単純な C# プロジェクトであり、-d を追加した WCF プロジェクトではありませんが、その場合、WCF サービスをどのように開始したのでしょうか? -d を入れたのがプレーンなバニラ C# プロジェクトであったかどうかはわかりませんが、WCF サービス アプリケーション プロジェクトに同じタブ形式がないことは確かです。
アップデート #2
わかりました、差分を確認するだけで、「 WCF Service Application 」プロジェクトと一緒に「 WCF Service Library 」プロジェクトを追加しました。タブにそのデバッグが含まれるようになり、起動するとサービスが開始され、テスト クライアントが表示されます。これは、VS テンプレートのプロジェクトのデバッグ タブのコマンド ライン プロパティに /client:"WcfTestClient.exe" が自動的に含まれているためです。プロパティ。
このサービスはクロス アプリケーションで使用されるサービス API として機能するため、「WCF サービス アプリケーション」を使用するべきではなく、「WCF サービス ライブラリ」タイプの WCF プロジェクト テンプレートを使用する必要があります。