C# Microsoft TestServer在TFS 2018构建任务上使NUnit/.Net核心中的请求失败
我已经使用.NETCore2.2控制台应用程序和NUnit3设置了一些API集成测试。API项目也使用.NETCore2.2,所有配置都已配置好,构建和运行都很好 然而,当构建到TFS 2018时,集成测试不起作用。TFS构建中的C# Microsoft TestServer在TFS 2018构建任务上使NUnit/.Net核心中的请求失败,c#,asp.net-core,nunit,integration-testing,tfsbuild,C#,Asp.net Core,Nunit,Integration Testing,Tfsbuild,我已经使用.NETCore2.2控制台应用程序和NUnit3设置了一些API集成测试。API项目也使用.NETCore2.2,所有配置都已配置好,构建和运行都很好 然而,当构建到TFS 2018时,集成测试不起作用。TFS构建中的dotnet test任务适用于我的所有单元测试,但是任何使用Microsoft.AspNetCore.TestHost.TestServer库编写的向API发出请求的测试都会失败,出现500 API控制器: [Route("[controller]")] public
dotnet test
任务适用于我的所有单元测试,但是任何使用Microsoft.AspNetCore.TestHost.TestServer
库编写的向API发出请求的测试都会失败,出现500
API控制器:
[Route("[controller]")]
public class AppController
{
[HttpPost("bootstrap"), ActionName(nameof(GetApplicationBootstrap))]
[ProducesResponseType(typeof(AppConfig), 200)]
[ProducesResponseType(401)]
public ActionResult<AppConfig> GetApplicationBootstrap()
{
return Ok(new AppConfig
{
IsAdministrator = true
});
}
}
[路由(“[控制器]”)]
公共类AppController
{
[HttpPost(“引导”),ActionName(nameof(GetApplicationBootstrap))]
[产品响应类型(类型(AppConfig),200)]
[产品响应类型(401)]
公共行动结果
TFS的测试结果:
相同的测试在本地运行,使用相同的命令,dotnet test
,对于在构建任务中运行的每个集成测试,我得到InternalServerError
,而不是MethodNotAllowed
我是否缺少生成服务器上的一些配置设置?是否需要对代理进行不同的设置?我在服务器上启用了具有最新更新的VS2017 Enterprise和IIS。生成代理是否无法像我的本地工作站那样设置测试主机?我和runni之间的区别是什么ngdotnet test
本地,生成代理运行相同的命令
非常感谢任何关于这个谜团的线索。HTTP 500=未处理的异常。当你得到500时抛出一个异常,这样你就可以看到实际发生的情况。TTP 500=未处理的异常。当你得到500时抛出一个异常,这样你就可以看到实际发生的情况
public class TestFixtureBase
{
internal HttpClient Client;
internal TestServer Server;
[SetUp]
protected void SetUp()
{
Server = new TestServer(new WebHostBuilder().UseEnvironment("Development").UseStartup<TestServerStartup>());
Client = Server.CreateClient();
}
[Test]
public async Task Post_WhenCalled_ReturnsAppConfigModel_Ok()
{
//Arrange
var request = new HttpRequestMessage(new HttpMethod("POST"), "/app/bootstrap");
//Act
var result = await Client.SendAsync(request);
//Assert
Assert.True(result.IsSuccessStatusCode);
}
[TestCase("GET")]
[TestCase("PUT")]
[TestCase("DELETE")]
public async Task Get_WhenCalled_ReturnsAppConfigModel_Error(string method)
{
//Arrange
var request = new HttpRequestMessage(new HttpMethod(method), "/app/bootstrap");
//Act
var result = await Client.SendAsync(request);
//Assert
Assert.False(result.IsSuccessStatusCode);
Assert.AreEqual(HttpStatusCode.MethodNotAllowed, result.StatusCode);
}
[TearDown]
protected void TearDown()
{
Server = null;
Client = null;
}
}