单元测试在连接到asp.net Web服务时抛出异常

时间:2012-02-01 15:01:45

标签: c# .net web-services integration-testing

我创建了一个单元测试来测试我是否可以登录我的ASP.NET Web服务。 Web服务工作正常甚至登录过程。

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

  

指定的网址('http://www.foo.com/')与之对应   一个有效的目录。配置为在IIS中的ASP.NET中运行的测试需要a   URL存在的有效目录。

我正在通过visual studio运行我的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);
        }

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

如果您想进行单元测试,可能需要探索不同的方法。

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

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

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

答案 1 :(得分:0)

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