在article on strathweb之后,我最近在我的DNX项目中添加了一些集成测试。在本地这些运行正常(在内存Web服务器中可能)。
然而,当运行tests on a VM with only a single core时,集成测试会无限期地挂起(并最终失败,因为appveyor构建的上限为60分钟。
奇怪的是,当运行tests on a VM with more than one core时,一切运行正常。
显而易见的结论是,Microsoft.AspNet.TestHost.TestServer 可能需要多个Core(或至少一个以上的逻辑处理器)。有没有人有这方面的经验可以确认/否认?
答案 0 :(得分:2)
@Tratcher回复评论: xUnit支持异步,所以让你的测试异步和返回任务(否则xUnit不知道测试的结果,甚至在它运行完成之前就会通过):
[Fact]
public async Task Get_hello_should_ignore_bob()
{
// Given a sample client
var client = SampleClient();
// When I call POST /account/signin
var value = new StringContent("");
var response = await client.PostAsync("/account/signin", value);
// Then the result should be Hello
string result = await response.Content.ReadAsStringAsync();
result.Should().Be("\"Hello\"");
}
现在您的测试是 async ,您可以使用等待,而不是在任务上调用.Result(导致您出现问题的原因):
此外,值得注意的是为什么会发生这种情况。 See more about dead-lock and SynchronizationContext