2011-10-28 30 views
5

WCFサービスを作成していて、そのうちの1つをテストしようとしました。私はWCFサービスメソッドを右クリックし、ユニットテストを作成することを選択しました。単体テストWCFメソッド

新しいテストプロジェクトを作成し、ユニットテストを作成しました。

私はテストプロジェクトを実行しようとしましたが、何がUrlToTestの値であるべきかわかりません。私はサービスにURLを入れました。

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\VS Projects\\NetBranch4\\" + 
    "MobileCheckCapture\\MobileCheckCapture", "/")] 
// [UrlToTest("http://localhost:45651/")] 
[UrlToTest("http://localhost/mobilecc/mobilecc.svc")] 
public void AuthenticateUserTest() 
{ 
    // TODO: Initialize to an appropriate value 
    MobileCC target = new MobileCC(); 

    // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; 

    // TODO: Initialize to an appropriate value 
    string expected = string.Empty; 
    string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

答えて

3

HOSTTYPE、AspNetDevelopmentServerHostとUrlToTestはASP.NET unittestのではなく、WCFのために使用されるパラメータです。これらの属性をコメントし、入力パラメータを設定してアサートし、テストを実行します。

[TestMethod()] 
public void AuthenticateUserTest() 
{  
    MobileCC target = new MobileCC(); // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; // TODO: Initialize to an appropriate value 
    string expected = string.Empty; // TODO: Initialize to an appropriate value  string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

は、この情報がお役に立てば幸いです。

+0

は、それが動作するようになりましたが、私は実際に=ターゲットにブレークポイントを入れているありがとう.AuthenticateUser(authenticateRequest);それは壊れていないし、wcfメソッドをデバッグすることができます – user228777

+0

VSメニューのテストに移動し、 "現在のコンテキストでデバッグ - >テスト"を選択します。 VSのテストツールツールバーでテストを実行するオプションもあります。 –

+0

デバッグメニューの[現在のコンテキストでテストする]オプションが表示されません。オプションを設定する必要がありますか?ありがとう – user228777

4

VSをビルドするのではなく、自分のテストを手動で行う方がよいです。まるであなたのテストの中の普通のクラスであるかのようにサービスを新しくして、関数を呼び出すと、あなたが期待している値に対してアサートします。私のWCFサービスはすべて通常のクラスのようにテストされています。実際にサービスに接続し、エンドポイントが正しいことを保証するための統合テストは、サービスのロジックをテストすることとはまったく関係ありません。

ETA:接続の問題、ファイアウォールの問題などがWCFサービスで解決するまでに時間がかかることがあり、最後にテストを予約するため、最初にロジックをテストします。

0

Webサービスのテストメソッドを正常に実行するには、属性[HostType("ASP.NET")]を削除する必要があります。またUrlToTestには、WebアプリケーションへのURLのみが含まれていて、SVCファイルにはURLが含まれていない必要があります。また、いくつかの特定の場合にのみ、試験方法にはAspNetDevelopmentServerが必要です。

ローカルIIS上であなたにSVCをホストしている場合、テストメソッドのコードはのようになります。

[TestMethod()] 
[UrlToTest("http://localhost/ServiceApp")] 
public void ServiceTest() 
{ 
    WcfService target = new WcfService(); 
    string arg = "test"; 
    Response actual = target.DoSmth(arg); 

    Assert.IsTrue(actual != null); 
} 
関連する問題