VisualStudio 2010 WebServiceのユニットテスト

1859 ワード

VisualStudio 2010に付属のユニットテストツールを使用すると、大量のコードを自動的に生成できます.とても使いやすいです.
使い方は簡単です.テスト対象のクラスを右クリックし、そのCreate Unit Testsを選択すると、ページがポップアップします.
デフォルトでは、テスト対象クラスのすべてのメソッドがチェックされ、ページの一番下にOutputプロジェクトの下のメニューがあります.
既存のテストエンジニアリングに生成コードを入れることを選択できます.あるいは新しいテストプロジェクトを構築します.
確認後OKを押すと自動的にテストクラスが生成され、指定されたプロジェクトの下に置かれます.
 
チェックされたすべてのメソッドは、公有にかかわらず、プライベートにもWebServiceメソッドにも対応するテストメソッドを生成することがわかります.
WebServiceのテストコードは次のとおりです.
        [TestMethod()]
        [HostType("ASP.NET")]
        [AspNetDevelopmentServerHost("..\\WebService003", "/")]
        [UrlToTest(http://localhost:54241)]
        public void getDataTest001()
        {
            WebService001_Accessor target = new WebService001_Accessor();
	  string paraData = "the parameter"
           string expected = "the expected result";
           actual = target.getData(paraData);
            
           Assert.AreEqual(expected, actual);
        }

まず関数ヘッダを見ると,通常のテストメソッドの[TestMethod()]属性のほかに,WebServiceメソッドには3つの属性が追加されている.
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("..\\WebService003", "/")]
[UrlToTest(http://localhost:54241)]
 
AspNetDevelopmentServer Hostはあなたのテストの対象プロジェクトを指しています.
UrlToTestは、テストするWebService Urlのルートを指します.ここでは、特定のWebServiceクラスに変更することはできません.
これにより、ユニットテストを開始すると、vs 2010はテストするWebServiceを自動的に起動します(http://localhost:54241)
最後に、WebServiceプロジェクトをテストする場合はDefaultがありません.aspxファイルの場合、テスト実施時にthe Web request completed successfully without running the testと報告されます.
テストを続行できません.
msdnの解決策は、デフォルトのDefaultを追加することです.aspx(何も変更する必要はありません).
ユニットテストのために、テスト対象エンジニアリングを変更するのはおかしいです.
しかし、vs 2010が持参したユニットテストツールが非常に便利であることを考えると、我慢するしかありません.