Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft TestServer在TFS 2018构建任务上使NUnit/.Net核心中的请求失败_C#_Asp.net Core_Nunit_Integration Testing_Tfsbuild - Fatal编程技术网

C# Microsoft TestServer在TFS 2018构建任务上使NUnit/.Net核心中的请求失败

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

我已经使用.NETCore2.2控制台应用程序和NUnit3设置了一些API集成测试。API项目也使用.NETCore2.2,所有配置都已配置好,构建和运行都很好

然而,当构建到TFS 2018时,集成测试不起作用。TFS构建中的
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之间的区别是什么ng
dotnet 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;
    }
}