c# - Visual Studio : How can I get my test project to start the web project it depends on

标签 c# wcf visual-studio-2012 system-testing

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

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

我不确定是否真的有办法使用内置的 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) 这种方法是否完全错误,我真正应该做的是将我的测试放入一个可执行文件中,我可以在我们部署到的任何环境中运行它作为快速部署后冒烟测试。

最佳答案

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

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

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

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

关于c# - Visual Studio : How can I get my test project to start the web project it depends on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555431/

相关文章:

c# - 图片的Base64编码

c# - 将调试启动外部程序选项设置为 Visual Studio 中类库的可执行文件

visual-studio-2012 - Visual Studio 远程性能分析

wcf - Json Web服务最大内容长度?

c# - 远程监控设计

c - OpenSSL 1.1.0 中的 EVP_get_cipherbyname 和 "undefined struct/union evp_cipher_st"

c# - 复杂对象/嵌套映射中的自动映射器和映射列表

c# - 如何在ListMetrics函数中使用nextToken

c# - 类、接口(interface)、泛型......需要简化

wcf - 为什么我会收到此 WCF 错误消息?