4

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 プロジェクト テンプレートを使用する必要があります。

4

3 に答える 3

2

テスト プロジェクトと同じソリューションから wcf プロジェクトを参照します。

右クリック ソリューション -> スタートアップ プロジェクトの設定 複数のスタートアップ プロジェクトを選択し、wcfservice のアクションをなしから開始またはデバッグなしで開始に変更します。プレイしてテストしてください:)

または、デバッグなしでプロジェクトを開始すると、wcf サービスが実行され、コーディング/ビルドおよびテストを続行できます。

編集:

これもできることです。

wcf プロジェクトを wcf サービス ライブラリに変更し、このプロジェクトに次の構成があることを確認してください...

デバッグ中:

開始アクション: プロジェクトの開始 開始オプション: コマンド ライン引数: /client:"WcfTestClient.exe"

wcf オプションの下:

「同じソリューションで別のプロジェクトをデバッグするときに wcf サービス ホストを開始する」にチェックを入れる

ソリューション -> スタートアップ プロジェクトの下に、単一のスタートアップ プロジェクトがあることを確認します。このようにして、ソリューション内の他のプロジェクトをデバッグできます。ビジュアル スタジオは、wcf サービスが確実に開始されるようにします。

于 2013-10-23T21:46:28.860 に答える
0

通常、WCF サービス ロジックを他のプロジェクトに配置します。たとえば、「WCF ログイン ライブラリ」と言って、その関数をテストします。これらのメソッド呼び出しをテストするために wcf サービスは必要ありません。次に、1 つの方法だけを使用して、WCF との接続をテストできます (通常は手動で行います)。

それはより単純なアプローチではありませんか?

于 2013-10-23T21:47:05.623 に答える