【问题标题】:How to have integration test project use a different connection string?如何让集成测试项目使用不同的连接字符串?
【发布时间】:2021-09-30 08:50:51
【问题描述】:

我在 app.config 文件中设置了连接字符串,其中包含用于调试和发布 based on this SO answer 的不同文件。我正在设置一个集成测试项目,它应该使用不同的初始目录进行测试。如何让项目(并且只有集成测试项目)使用不同的连接字符串?

编辑:尝试添加更多细节。在 app.config 我有以下内容:

在连接字符串中,有initial catalog=MyProgramDB 行。不过,我希望单元测试改用initial catalog=MyIntegrationTestingDB。

我尝试为可以切换到的测试创建单独的配置,但我无法将测试项目更改为除 Debug 或 Release 之外的任何配置。

【问题讨论】:

    标签: c# .net nunit


    【解决方案1】:

    你没有指定任何代码,所以我给你一个例子,说明如何用SQL Server和EF初始化它。

    在您的项目启动中,您需要注入连接字符串。

    可能是这样的:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<DbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("<Name1>"));
    }
    

    &lt;Name1&gt; 将是集成测试所需的连接字符串。在另一个项目中,您可能会使用&lt;Name2&gt;。

    【讨论】:

    • 我可以将您提供的代码 sn-p 放在哪里?而且我不确定我可以提供什么代码;我已经编辑了这个问题,希望能添加更多细节。
    • 抱歉,如果不清楚;老实说,我对此有点过头了。
    • @HarryAdams 你需要把它放在 Startup.cs 文件中。可能在您的测试项目中,您没有此文件,但有一些方法可以做到这一点。例如,如果您使用 xUnit,您可能会查看 github.com/pengweiqhca/Xunit.DependencyInjection 我还建议您查看这篇文章,它与我上面描述的不完全一样,但它可能会对您有所帮助:timdeschryver.dev/blog/…
    • 抱歉,愚蠢的问题 - 这是特定于 ASP.NET 的吗?我们正在使用 C#/.net 框架?我正在阅读的内容表明这是特定于 ASP 的?
    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2011-11-11
    • 2012-08-09
    相关资源
    最近更新 更多