【问题标题】:Unit Test configuration for ASP.NET applicationASP.NET 应用程序的单元测试配置
【发布时间】:2010-01-12 17:40:04
【问题描述】:

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

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

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

谢谢

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

/

// <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");
        }

【问题讨论】:

  • 你用的是什么单元测试框架?
  • 微软随VS2008提供的“Microsoft.VisualStudio.QualityTools.UnitTestFramework”
  • @asdi:尽管 MS 可能会这样称呼它,但这不是单元测试。我重新标记了您的问题,以吸引稍微不同的受众群体,他们可能会帮助您解决这个问题。

标签: c# asp.net visual-studio-2008 mstest webtest


【解决方案1】:

您收到的异常消息听起来根本不像是单元测试。您是否尝试运行 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 等,这是最好的保证。

【讨论】:

  • 我使用 NUnit 手动编写了测试,并且能够使用外部 NUnit IDE 成功运行。我试图在 VS2008 中使用/练习微软提供的“UnitTestFramework”和集成的内置测试环境。
  • 如果您想编写 NUnit 风格的测试,您也可以使用 MSTest。只是不要使用他们所有的蹩脚向导,而只需创建一个新的测试项目并开始向项目中添加新的单元测试。
  • 还有一件事,我现在在 NUnit 中使用“断言”。我确实需要“模拟”对象来测试许多数学方法。如何创建 Mocks?
  • 谢谢,Moq相处得很好
【解决方案2】:

将属性 UrlToTest 设置为 Url In 测试。喜欢:

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

【讨论】:

    【解决方案3】:

    或者就像马克说的那样,摆脱
    [HostType("ASP.NET")] [AspNetDevelopmentServerHost("C:\xx\xx\Documents\Visual Studio 2010\Projects\xx\xx", "/")] [UrlToTest("http://localhost:xxx/examples.aspx")] [DeploymentItem("examples.dll")] 试图在 MVC 项目中使用它,直到我摆脱它才通过

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 2017-05-04
        • 2017-08-05
        相关资源
        最近更新 更多