【发布时间】:2011-02-20 16:22:31
【问题描述】:
经过一番挖掘,我接受了这个帖子中的建议:How to unit test C# Web Service with Visual Studio 2008
我创建了一个单独的类,而我的 Web 服务类只是该类的包装器。问题是当我尝试在 VS2008 中创建一个单元测试项目时,它坚持创建一个单元测试,就像我正在测试 Web 服务调用而不是我指定的类一样。我无法进入我正在尝试测试的课程。
我有一个网络服务“subscription_api.asmx”。后面的代码是“subscription_api.cs”,其中包含对“subscription.cs”处真实代码的 Web 方法包装器调用。
我希望能够做到以下几点:
[TestMethod()]
public void GetSystemStatusTest()
{
subscription sub = new subscription();
XmlNode node = sub.GetSystemStatusTest();
Assert.IsNotNull(node);
}
但是我得到了这个从 VS'08 自动生成的混乱:
/// <summary>
///A test for GetSystemStatus
///</summary>
// TODO: Ensure that the UrlToTest attribute specifies a URL to an ASP.NET page (for example,
// http://.../Default.aspx). This is necessary for the unit test to be executed on the web server,
// whether you are testing a page, web service, or a WCF service.
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\CVSROOT\\rnr\\pro\\product\\wms\\ss\\subscription_api", "/subscription_api")]
[UrlToTest("http://localhost/subscription_api")]
public void GetSystemStatusTest()
{
subscription_Accessor target = new subscription_Accessor(); // TODO: Initialize to an appropriate value
XmlNode expected = null; // TODO: Initialize to an appropriate value
XmlNode actual;
actual = target.GetSystemStatus();
Assert.AreEqual(expected, actual);
Assert.Inconclusive("Verify the correctness of this test method.");
}
此外,Test References 文件夹中有一个“subscription_api.accessor”。
当我尝试这个时:
[TestMethod()]
public void GetSystemStatusTest2()
{
subscription_Accessor sub = new subscription_Accessor();
XmlNode node = sub.GetSystemStatus();
Assert.IsNotNull(node);
}
我收到一个错误:
Test method subscription_api.Test.subscriptionTest.GetSystemStatusTest2 threw exception: System.TypeInitializationException: The type initializer for 'subscription_Accessor' threw an exception. ---> System.ArgumentNullException: Value cannot be null.
我对单元测试很陌生,感觉很迷茫。如何在不测试 Web 服务的情况下为“subscription.cs”中的订阅类创建单元测试?我是否仅限于在同一个项目中进行测试(我希望不是)?我是否必须将目标类放在 Web 服务项目之外的自己的项目中?
【问题讨论】:
标签: .net web-services unit-testing