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问题。

+0

如果您启动具有诊断冗长的蛋糕,您将获得更多日志记录以及用于启动xunit的命令行。你可以在下面的问题阅读更多关于 https://*.com/questions/38658660/how-to-enable-diagnostic-verbosity-for-cake – devlead

,当你正在运行的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:/";