I made the following xUnit test which is using a HttpClient to call a status api method on a webserver.
[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!");
}
This test is running fine locally. But when I commit the code and try to run the same test on the TeamCity build server, it runs forever. I even have to kill the xunit runner process because stopping the build will not stop this process.
However when I write the test like this
[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!");
}
It runs fine locally and also on TeamCity.
My concern is now that I forget to write the test like the second variant and that once in a while the teamcity build is hanging.
Can anybody explain to me why xUnit running on the teamcity buildserver is not running the test correctly in the first place? And is there a solution for this to solve this?