Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET应用程序的单元测试配置_C#_Asp.net_Visual Studio 2008_Mstest_Webtest - Fatal编程技术网

C# ASP.NET应用程序的单元测试配置

C# ASP.NET应用程序的单元测试配置,c#,asp.net,visual-studio-2008,mstest,webtest,C#,Asp.net,Visual Studio 2008,Mstest,Webtest,这是我对Asp.NETWeb应用程序的第一次测试。 我们有一个由几个模块组成的引擎。我需要测试引擎模块中的类。 尽管这些类别是Asp.Net应用程序的一部分,但它们只包含业务逻辑 除了作为WebApp的一部分,我如何单独测试这些类?因为我犯了这个错误 Web请求“”已成功完成,但未运行测试。当配置用于测试的Web应用程序失败(处理请求时发生ASP.NET服务器错误)或未执行ASP.NET页面(URL可能指向HTML页面、Web服务或目录列表)时,可能会发生这种情况。在ASP.NET中运行测试需要

这是我对Asp.NETWeb应用程序的第一次测试。 我们有一个由几个模块组成的引擎。我需要测试引擎模块中的类。 尽管这些类别是Asp.Net应用程序的一部分,但它们只包含业务逻辑

除了作为WebApp的一部分,我如何单独测试这些类?因为我犯了这个错误

Web请求“”已成功完成,但未运行测试。当配置用于测试的Web应用程序失败(处理请求时发生ASP.NET服务器错误)或未执行ASP.NET页面(URL可能指向HTML页面、Web服务或目录列表)时,可能会发生这种情况。在ASP.NET中运行测试需要URL解析为ASP.NET页面,并在加载事件之前正确执行页面。来自请求的响应与测试结果一起存储在文件“WebRequestResponse\u BlogManagerBPOConstr.html”中;通常,可以使用Web浏览器打开此文件以查看其内容

谢谢

编辑:@Mark,这是设计器生成的测试方法之一

/

//
///BlogManagerBPO构造函数的测试
///
//TODO:确保UrlToTest属性指定指向ASP.NET页面的URL(例如,
// http://.../Default.aspx). 这是在web服务器上执行单元测试所必需的,
//无论您是在测试页面、web服务还是WCF服务。
[TestMethod()]
[主机类型(“ASP.NET”)]
[AspNetDevelopmentServerHost(“D:\\WorkingCopies\\MyProject\\Engine”,“/”)
[UrlToTest(”http://localhost:8936/")]
public void BlogManagerBPOConstructorTest()
{
BlogManagerBPO target=新建BlogManagerBPO();
Assert.Inconclusive(“TODO:实现代码以验证目标”);
}

您收到的异常消息听起来根本不像是单元测试。您正在尝试运行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等,则可以最好地确保这一点。

将属性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")]

或者像马克说的那样,摆脱

[主机类型(“ASP.NET”)]
[AspNetDevelopmentServerHost(“C:\xx\xx\Documents\Visual Studio 2010\Projects\xx\xx”,“/”)
[UrlToTest(”http://localhost:xxx/examples.aspx")]
[DeploymentItem(“examples.dll”)]

我曾试图在MVC项目中使用它,但直到我将其删除后,它才通过测试。

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

您使用的是什么单元测试框架?Microsoft提供的VS2008,“Microsoft.VisualStudio.QualityTools.UnitTestFramework@asdi:不管MS怎么称呼它,这不是一个单元测试。我重新标记了您的问题,以吸引稍有不同的听众,他们可能会对此有所帮助。我使用NUnit手动编写了测试,并且能够使用外部NUnit IDE成功运行。我试图使用/实践Microsoft在VS2008中提供的“UnitTestFramework”和集成的内置测试环境。如果您想编写NUnit风格的测试,也可以使用MSTest。只是不要使用他们所有的蹩脚向导,而是创建一个新的测试项目,并开始向项目添加新的单元测试。我确实需要“模拟”对象来测试许多方法。如何创建模拟?请看这里:谢谢,与Moq相处得很好
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\xx\\xx\\Documents\\Visual Studio 2010\\Projects\\xx\\xx", "/")]
[UrlToTest("http://localhost:xxx/examples.aspx")]
[DeploymentItem("examples.dll")]