VisualStudio 2010对WebService进行单元测试

来源:互联网 发布:奢侈品图案 知乎 编辑:程序博客网 时间:2024/05/22 06:47

利用VisualStudio 2010自带的单元测试工具,可以自动生成大量的代码。非常好用。

使用方法很简单。在测试对象的类上点右键,选择那个Create Unit Tests,会弹出一个页面。

默认会把测试对象类的所有方法都勾选上,在页面的最下方有个Output project的下来菜单。

可以选择将生成代码放入一个既有的测试工程。或者建一个全新的测试工程。

确认好后点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)]

 

AspNetDevelopmentServerHost指向的是你的测试的对象工程

UrlToTest则指向你要测试的WebService Url的根位置。注意这里不能改成具体的某个具体的WebService类。

这样在你开始单元测试时,vs2010会自动启动你要测试的WebService(http://localhost:54241)

最后,如果你要测试的WebService工程没有一个Default.aspx文件的话,测试实施时会报the Web request completed successfully without running the test。

造成测试无法继续。

msdn给出的解决办法是,加一个默认的Default.aspx(什么也不用改)。

为了单元测试,要修改测试对象工程,这种做法有些奇怪。

不过鉴于vs2010自带的单元测试工具非常方便,也只能忍了。