我在 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/