4

我在 VS2012 中有一个 WCF 应用程序。我们还添加了一个用于进行单元测试的测试项目。这一切都很好

除此之外,我需要添加另一个测试项目来进行系统测试,这里的想法是 Web 服务将启动,并且测试项目将触发 Http Requests,作为对服务的端到端测试它所处的环境。

我不确定是否真的有一种方法可以使用内置的 Visual Studio 测试来做到这一点。如果我添加一个普通的测试类,运行web服务的网站就无法启动,测试失败。

我试图运行的代码是这样的:

[TestMethod]
public void CreateLogin()
{
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:61886/");          
    HttpResponseMessage response =          
       client.GetAsync("ssoauthenticationservice/createssologin").Result;
}

我觉得我在这里遗漏了一些非常明显的东西。所以我的问题是:

1)我可以以这种方式测试我的 Web 服务吗 - 有什么方法可以设置项目属性,以便首先启动 Web 服务,然后运行测试项目

或者:
2)这种方法完全错误吗,我真正应该做的是将我的测试放入一个可执行文件中,我可以在我们部署到的任何环境中运行它作为快速的部署后冒烟测试。

4

1 回答 1

1

您绝对可以使用此方法测试您的 wcf 服务。好不好看就看你的观点了。它还取决于您的业务实现是否与背后的 .svc 代码紧密耦合。

为此,您很可能需要在 TestInitialize 或 ClassInitialize 中创建一个服务主机,并在运行测试后将其拆除。

您可以在此处查看有关自托管的更多信息http://msdn.microsoft.com/en-us/library/ms731758.aspx

还应注意,此方法的效果取决于运行单元测试的环境。它在本地机器上运行良好,但需要管理员权限。正因为如此,在持续集成环境中使用这种方法似乎是个坏主意。

于 2013-10-24T02:37:35.783 回答