利用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自带的单元测试工具非常方便,也只能忍了。