2010-01-12 51 views
3

这是我第一次测试Asp.Net Web应用程序。 我们有一个由多个模块组成的引擎。我需要在引擎模块中测试类。 尽管这些类是Asp.Net应用程序的一部分,但它们仅由业务逻辑组成。ASP.NET应用程序的单元测试配置

我该如何测试这些类别是否属于WebApp的其他部分?因为我得到这个错误

Web请求'http://localhost:8936/'没有运行测试成功完成。当为测试配置Web应用程序失败时(处理请求时发生ASP.NET服务器错误),或者没有执行ASP.NET页面时(URL可能指向HTML页面,Web服务或目录列表)。在ASP.NET中运行测试需要将URL解析到ASP.NET页面,并使页面正确执行到Load事件。来自该请求的响应被存储在具有测试结果的文件'WebRequestResponse_BlogManagerBPOConstr.html'中;通常可以使用Web浏览器打开此文件以查看其内容。

感谢

编辑: @马克,这是由设计师产生的TestMethods之一

/

// <summary> 
     ///A test for BlogManagerBPO Constructor 
     ///</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("D:\\WorkingCopies\\MyProject\\Engine", "/")] 
     [UrlToTest("http://localhost:8936/")] 
     public void BlogManagerBPOConstructorTest() 
     { 
      BlogManagerBPO target = new BlogManagerBPO(); 
      Assert.Inconclusive("TODO: Implement code to verify target"); 
     } 
+0

您使用的是什么单元测试框架? – 2010-01-12 20:23:37

+0

微软提供的VS2008“Microsoft.VisualStudio.QualityTools.UnitTestFramework” – 2010-01-12 21:37:31

+0

@asdi:尽管MS可能称之为,但这不是单元测试。我重新标记了您的问题,以吸引稍微不同的受众群体,可能可以帮助您解决这个问题。 – 2010-01-12 21:46:55

回答

5

你得到听起来并不像它的异常消息一个单元测试。你想要运行一个Visual Studio Web测试套件吗?

对于单元测试,您应该简单地创建业务逻辑类的实例并测试它们,而不受ASP.NET运行时的干扰。

在MSTest的,可能看起来是这样的:

[TestMethod] 
public void Test5() 
{ 
    var sut = new Thing(); 
    var expectedResult = new object(); 
    sut.Bar = expectedResult; 
    var actual = sut.Bar; 
    Assert.AreEqual(expectedResult, actual); 
} 

(也许不是最激动人心的测试,虽然...)

没有具体ASP.NET遍寻。

如果你把业务逻辑在一个单独的库,并确保它不引用的System.Web这是最好的保证,等

+0

我已经使用NUnit手动编写了测试,并且能够使用外部NUnit IDE成功运行。我试图在VS2008中使用/练习“UnitTestFramework”和Microsoft提供的集成的内置测试环境。 – 2010-01-12 21:44:04

+0

如果你想编写测试NUnit风格,你也可以使用MSTest。只是不要使用他们所有的蹩脚向导,而只是创建一个新的测试项目,并开始向项目添加新的单元测试。 – 2010-01-12 21:53:53

+0

还有一件事,我现在在NUnit中使用“断言”。 我确实需要“模拟”对象来测试许多方法。我如何创建Mocks? – 2010-01-12 22:00:24

2

设置UrlToTest到URL属性在测试。像:

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\xx\\xx\\Documents\\Visual Studio 2010\\Projects\\xx\\xx", "/")] 
[UrlToTest("http://localhost:xxx/examples.aspx")] 
[DeploymentItem("examples.dll")] 
1

或类似马克说,摆脱
[HostType("ASP.NET")] [AspNetDevelopmentServerHost("C:\xx\xx\Documents\Visual Studio 2010\Projects\xx\xx", "/")] [UrlToTest("http://localhost:xxx/examples.aspx")] [DeploymentItem("examples.dll")] 试图在MVC项目中使用它,它没有过去,直到我摆脱它

0

只是检查,如果你已经将app.config添加到您的测试项目中,并且它已经从您的web.config(来自WebService项目)进行了必要的设置。