我进行了以下 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一开始就没有正确运行测试?有没有办法解决这个问题?