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

Microsoft.AspNet.TestHost.TestServer requires more than one Core/Processor?

article on strathweb 之后,我最近向我的 DNX 项目添加了一些集成测试。在本地这些 运行 很好(对于内存中的网络服务器来说是的)。

然而,当 运行 连接 tests on a VM with only a single core 时,集成测试无限期挂起(最终失败,因为应用程序构建的上限为 60 分钟。

奇怪的是,运行宁 tests on a VM with more than one core 一切 运行 都很好。

显而易见的结论是,也许 Microsoft.AspNet.TestHost.TestServer 需要 不止一个核心(或至少不止一个逻辑处理器)。有没有人有这方面的经验能够 confirm/deny?

@Tracher 作为评论回复: xUnit 支持异步,所以让你的测试异步和 return task(否则 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,您可以使用 await,而不是在任务上调用 .Result(这是导致你的问题):

另外,值得注意的是为什么会这样。 See more about dead-lock and SynchronizationContext