【发布时间】:2015-08-15 04:47:55
【问题描述】:
我进行了以下 xUnit 测试,它使用 HttpClient 在网络服务器上调用状态 api 方法。
[Fact]
public void AmIAliveTest()
{
var server = TestServer.Create<Startup>();
var httpClient = server.HttpClient;
var response = httpClient.GetAsync("/api/status").Result;
response.StatusCode.Should().Be(HttpStatusCode.OK);
var resultString = response.Content.ReadAsAsync<string>().Result;
resultString.Should().Be("I am alive!");
}
此测试在本地运行良好。但是当我提交代码并尝试在 TeamCity 构建服务器上运行相同的测试时,它会永远运行。我什至不得不杀死 xunit runner 进程,因为停止构建不会停止这个进程。
但是当我这样写测试时
[Fact]
public async void AmIAliveTest()
{
var server = TestServer.Create<Startup>();
var httpClient = server.HttpClient;
var response = await httpClient.GetAsync("/api/status");
response.StatusCode.Should().Be(HttpStatusCode.OK);
var resultString = await response.Content.ReadAsAsync<string>();
resultString.Should().Be("I am alive!");
}
它在本地和 TeamCity 上运行良好。
我现在担心的是,我忘记像第二个变体那样编写测试,并且有时 teamcity 构建会挂起。
谁能向我解释为什么在teamcity buildserver上运行的xUnit一开始就没有正确运行测试?有没有办法解决这个问题?
【问题讨论】:
标签: c# async-await xunit.net teamcity-9.0