单元测试在连接到asp.net web服务时引发异常

本文关键字:服务 异常 web net 连接 asp 单元测试 | 更新日期: 2023-09-27 18:22:03

我创建了一个单元测试来测试我是否可以登录到我的ASP.NET web服务。web服务运行良好,甚至登录过程也运行良好。

然而,当我试图通过测试连接到它时,它给了我一个错误:

指定的URL('http://www.foo.com/')与有效的目录。配置为在IIS中的ASP.NET中运行的测试需要URL的有效目录。

我正在通过visualstudio运行我的web服务,因为该项目仍在开发中。

这是我的测试代码:

[TestMethod()]
        [HostType("ASP.NET")]
        [UrlToTest("http://www.foo.com/")]
        public void Login_Test_It_Fails_If_GUID_IS_Wrong()
        {
            //Arrange
            Service service = new Service(); 
            string pGUID = string.Empty; 
            string connectionSQL = @"XXXXXXXXXX";
            bool targetOutput = false;
            //Act
            targetOutput = service.Login(pGUID, connectionSQL);
            //Assert
            Assert.IsFalse(targetOutput);
        }

提前谢谢。

单元测试在连接到asp.net web服务时引发异常

您在这里进行集成测试,因为您正在测试您的应用程序是否可以与外部依赖项通信。

如果你想进行单元测试,你可能想探索一种不同的方法。

  1. 如果web服务是您控制的,那么您可以为服务本身编写测试,以确认其登录身份验证逻辑。

  2. 对于您的消费应用程序,您可以基于服务的模拟编写单元测试,以确保您的应用程序在收到来自服务的响应时表现出正确的行为。

另一方面,将要使用的连接字符串传递到服务中似乎是一个糟糕的设计。为什么调用应用程序需要知道服务应该使用什么数据库?

在ASP.NET中运行测试需要URL解析为ASP.NET页面,并且页面在Load事件之前才能正确执行
测试方法由页面加载事件调用。因此,您可以创建一个空白的aspx页面,并设置UrlToTest属性来挂起它。