【问题标题】:Visual Studio: How can I get my test project to start the web project it depends onVisual Studio:如何让我的测试项目启动它所依赖的 Web 项目
【发布时间】:2013-10-24 01:43:51
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多