我有一个 Web-API .NET Core 2.2 项目,我正在尝试对其进行集成测试。
我遵循了Microsoft的指南。从测试运行器和命令行启动它们时,测试通过,它们应该正确配置,我可以通过 WebApplicationFactory - HTTP 客户端调用控制器。我已经通过 xunit.runner.json 禁用了卷影复制 到目前为止一切顺利。
我正在尝试使用 Azure DevOps 来部署我的项目,在发布步骤中,我添加了一个测试步骤,该步骤获取构建工件、下载它并运行测试。基本上,在本地计算机上复制,这将转换为:
dotnet publish testProject.csproj <path_on_disk>
cd <path_on_disk>
vstest.console.exe testProject.dll
Run Code Online (Sandbox Code Playgroud)
从已发布的文件夹运行测试时,出现以下错误
Failed wInvoiceIntegrationTests.Controllers.Authentication.AuthenticationControllerTests.AuthenticationController_Register_InputDoesNotRespectsModel_DoesNotRegistersUser(email: "abcd@@.com", password: "Abcdefgh1")
Error Message:
System.InvalidOperationException : Solution root could not be located using application root C:\Users\mihai\Desktop\publish\.
Stack Trace:
at Microsoft.AspNetCore.TestHost.WebHostBuilderExtensions.UseSolutionRelativeContentRoot(IWebHostBuilder builder, String solutionRelativePath, String applicationBasePath, String solutionName)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.SetContentRoot(IWebHostBuilder builder)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.EnsureServer()
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateDefaultClient(DelegatingHandler[] handlers)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateClient(WebApplicationFactoryClientOptions options)
Run Code Online (Sandbox Code Playgroud)
我没有需要服务也不想提供的静态文件,我只是想测试控制器。路径是正确的,这就是测试 dll 所在的位置,并且还包含项目 dll。
与此同时,我已经设法让测试在构建阶段通过 azure 运行
ls *Tests*/*.csproj | xargs …
Run Code Online (Sandbox Code Playgroud)