只是尝试为.NET Core Web API构建Integration Test项目。所以我跟随了一些例子,包括这个例子(https://dotnetcorecentral.com/blog/asp-net-core-web-api-integration-testing-with-xunit/),当然,我遇到了问题。当我运行简单的GET测试时,我得到一个异常:“System.InvalidOperationException:ConnectionString属性尚未初始化。”
任何帮助,将不胜感激。
对于server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
,您需要手动配置appsettings.json
路径
var server = new TestServer(WebHost.CreateDefaultBuilder()
.UseContentRoot(@"D:\Edward\SourceCode\AspNetCore\Tests\IntegrationTestMVC")
// This is the path for project which needs to be test
.UseStartup<Startup>()
);
为方便起见,我建议你试试Basic tests with the default WebApplicationFactory。
WebApplicationFactory构造函数通过在包含集成测试的程序集上使用等于TEntryPoint程序集System.Reflection.Assembly.FullName的键搜索WebApplicationFactoryContentRootAttribute来推断应用程序内容根路径。如果找不到具有正确密钥的属性,WebApplicationFactory将回退到搜索解决方案文件(* .sln)并将TEntryPoint程序集名称附加到解决方案目录。应用程序根目录(内容根路径)用于发现视图和内容文件。
参考:How the test infrastructure infers the app content root path