相关疑难解决方法(0)

使用异步方法在Teamcity上运行xUnit测试

我做了以下xUnit测试,该测试使用HttpClient在Web服务器上调用状态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!");
}
Run Code Online (Sandbox Code Playgroud)

这个测试在本地运行良好.但是当我提交代码并尝试在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!");
}
Run Code Online (Sandbox Code Playgroud)

它在本地运行良好,也在TeamCity上运行.

我现在担心的是,我忘了像第二个版本那样编写测试,并且偶尔会出现teamcity版本.

任何人都可以向我解释为什么在teamcity buildserver上运行的xUnit首先没有正确运行测试?有解决方案可以解决这个问题吗?

c# xunit.net async-await teamcity-9.0

3
推荐指数
1
解决办法
758
查看次数

标签 统计

async-await ×1

c# ×1

teamcity-9.0 ×1

xunit.net ×1