【发布时间】:2021-12-11 04:13:31
【问题描述】:
我正在将使用 .NET Framework 4.6.1 的 ASP.NET Web API 解决方案迁移到 ASP.NET Core 5 / .NET Framework 5。除了 Web API 项目之外,还有一个基于 MSTest 的测试项目共享Web API 项目的连接字符串信息。如下所示:
Web API 项目有一个 Web.config 文件,其中包含以下代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings configSource="bin\ConnectionInfo.config" />
...
</configuration>
基于 MSTest 的项目有一个 App.config 文件,其中包含以下代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
<connectionStrings configSource="ConnectionInfo.config"/>
</configuration>
因此,以上两个文件都引用了ConnectionInfo.config,其中包含实际的连接字符串,如下所示:
<connectionStrings>
<add name="MyConnectionString" connectionString="the connection string" />
</connectionStrings>
该设置确保我有一个需要更改连接字符串以将应用程序指向另一个数据库的点。
最终,我在测试数据库中检索连接字符串并将其传递给我的DatabaseManager,它提供了创建和重置数据库的功能:
string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
_databaseManager = new DatabaseManager(connectionString);
现在,将 Web API 项目迁移到 ASP.NET Core 5 后,Web.config 将替换为 appsettings.json 文件。每个环境都有一个这样的文件,每个文件都包含该环境的连接字符串。
有没有办法以某种方式与测试项目共享相应的连接字符串?我不想在该项目中手动加载appsettings.json,但希望有一个内置机制。有什么可以帮助的吗?
【问题讨论】:
-
您能否向我们展示一些有关如何设置集成测试的相关代码?否则,答案很可能会变得非常笼统,并且与您的具体情况无关。
-
我添加了一些代码,应该指出我在测试项目中如何处理连接字符串。
-
由于您在测试中查询数据库,您可以参考 msft 的集成测试文档,它应该可以立即解决您的问题:docs.microsoft.com/de-de/aspnet/core/test/…
标签: asp.net asp.net-web-api .net-5 appsettings