Cake Build脚本:运行XUnit集成测试时出错 - 无法获取ConfigurationManager.ConnectionStrings [“FlexConnString”]
问题描述:
我有一个使用XUnit访问数据库的集成测试。我们需要能够从app.config文件中获取数据库连接字符串。Cake Build脚本:运行XUnit集成测试时出错 - 无法获取ConfigurationManager.ConnectionStrings [“FlexConnString”]
从IDE运行测试时,它运行得非常好,并且找到了连接字符串。 当我从cake.build自动运行测试ConfigurationManager.ConnectionStrings [“blahblah”]沤
var connectionStringSettings = ConfigurationManager.ConnectionStrings["FlexConnString"];
if (connectionStringSettings == null)
{
Console.WriteLine("ConfigManager does not return a setting for FlexConnString");
_connectionString = "No Connection string";
}
蛋糕任务是
Task("Run-Integration-Tests")
.IsDependentOn("Run-Unit-Tests")
.Does(() =>
{
var testDir = "./artifacts/_tests/**/*.IntegrationTests.dll";
Information("Start Running Integration Tests in " + testDir);
XUnit2(testDir,
new XUnit2Settings {
Parallelism = ParallelismOption.All,
HtmlReport = true,
NoAppDomain = true,
NUnitReport = true,
XmlReport = true,
ReportName = "MixTdiIntegrationTestResults",
OutputDirectory = "./artifacts"
});
});
此输出CONFIGMANAGER为FlexConnString不返回设定'从powershell运行build.cake时。
我不确定这是一个XUnit问题还是Cake问题。
答
,当你正在运行的xUnit测试它会在当前工作目录中的配置文件,您可以轻松地检查
Information("Current Directory: {0}", System.IO.Directory.GetCurrentDirectory());
,并不能找到它,你需要在XUnit2Settings指定WorkingDirectory到文件夹与连接字符串配置文件
XUnit2(testDir,
new XUnit2Settings {
Parallelism = ParallelismOption.All,
HtmlReport = true,
NoAppDomain = true,
NUnitReport = true,
XmlReport = true,
ReportName = "MixTdiIntegrationTestResults",
OutputDirectory = "./artifacts",
WorkingDirectory = "[your config file path]"
});
需要提到的另一种选择是改变当前的工作目录
Environment.CurrentDirectory = "c:/";
如果您启动具有诊断冗长的蛋糕,您将获得更多日志记录以及用于启动xunit的命令行。你可以在下面的问题阅读更多关于 https://*.com/questions/38658660/how-to-enable-diagnostic-verbosity-for-cake – devlead