【问题标题】:Cake Build Script: Error when running XUnit Integration Tests - Cannot get ConfigurationManager.ConnectionStrings["FlexConnString"]Cake 构建脚本:运行 XUnit 集成测试时出错 - 无法获取 ConfigurationManager.ConnectionStrings["FlexConnString"]
【发布时间】:2017-06-02 04:03:46
【问题描述】:

我有一个使用 XUnit 访问数据库的集成测试。我们需要能够从 app.config 文件中获取数据库连接字符串。

从 IDE 运行测试时,它运行良好,并且找到了连接字符串。 当我从 cake.build 自动运行测试时 ConfigurationManager.ConnectionStrings["blahblah"] ret

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"
       });
});

当从 powershell 运行 build.cake 时,此输出 ConfigManager 不会返回 FlexConnString 的设置。

我不确定这是 XUnit 问题还是 Cake 问题。

【问题讨论】:

  • 如果您使用诊断详细信息启动 cake,您将获得更多日志记录和用于启动 xunit 的命令行。您可以在以下问题中阅读更多信息stackoverflow.com/questions/38658660/…

标签: c# integration-testing xunit cakebuild


【解决方案1】:

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

【讨论】:

  • 这不起作用。配置文件在输出目录中,Environment.Currentdirectory 报告正确的文件夹,XUnit2Settings 中的工作目录是正确的
  • 对我的修复是将 ShadowCopy 设置为 false(它总是该死的影子副本!)ShadowCopy = false
猜你喜欢
  • 2019-10-08
  • 2019-11-18
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多