Microsoft.AspNet.TestHost.TestServer需要多个Core / Processor?

时间:2016-03-27 11:45:11

标签: continuous-integration cpu dnx appveyor

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(或至少一个以上的逻辑处理器)。有没有人有这方面的经验可以确认/否认?

1 个答案:

答案 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