1

関数を呼び出す WCF アプリケーションの単体テストを行っています。この機能をテストする必要があります。そのプロキシを作成していますが、メソッドを単体テストしようとすると、いくつかの例外が生成されます。次のコードを試しましたが、例外のためにメソッドをテストできませんでした。発生する例外の種類は固定されていないと考えてください。

[TestMethod]
[ExpectedException(typeof(Exception),"A Exception is been Generated.")]
public void TestMethodProxy()
{
IServiceProxy obj=new ServiceProxy();
bool result=obj.DisplayMessage();
Assert.IsTrue(result);
}

良い解決策を提案してください..よろしくお願いします....

4

3 に答える 3

1

単体テスト WCF サービスは、WCF 内部が機能しているかどうかを確認するだけのテスト プロキシではありません。テストする必要があるのは、サービスを新規作成してそのメソッドをテストするだけで、サービスのメソッドです。ここで、サービスがスローできる予想される例外をテストできます。

于 2012-04-19T06:45:46.573 に答える
1

複数のユニットを同時にテストしているため、コードは非常に価値のある単体テストにはなりません。

  • WCF クライアント
  • サービスへのトランスポート
  • サービス メッセージ フォーマッタ (シリアライズとデシリアライズの両方)
  • WCF サービス ホスト
  • WCF ベースのサービス。

これにより、問題が直接発生しました。一度に複数のユニットをテストしている場合、どのユニットが失敗したかをどのように判断できますか?

答えは:ユニット テストはユニットをテストする必要があります。

サービスの内部機能をテストする場合は、WCF ホスティング環境の外部でそのサービスの新しいインスタンスを作成し、それを単体テストするだけです。ホスティングと構成をテストする場合は、モック サービスを作成し、WCF でホストして、信頼できるクライアントでサービスを呼び出します。

有用な情報を提供したい場合は、テストを独立したユニットに分割する必要があります。

于 2012-04-19T07:02:58.883 に答える
0

テスト自体に try catch を入れて、さまざまなケースをすべてそのように処理します。そうすれば、より細かく制御できます

テストで正しい例外がキャッチされない場合は、Assert.Fail を実行できます。

try
{
 //Run code that throws exception
}
catch(SpecificException ex)
{
  //Assert ex for more details if needed
  return;
}
Assert.Fail();
于 2012-04-19T04:40:12.543 に答える