我正在尝试删除项目存储库中的
.runsettings
文件,并将所有配置变量保留在单个 .env
文件中。
我陷入困境的一个地方是通过 VS Code 运行测试时的场景。我正在编写 C# 并使用 C# 开发工具包/C# 扩展(Linux 操作系统)。这些扩展会自动检测 NUnit 测试并将其显示在测试窗口中。我可以单击“运行测试”并执行所有测试。问题是,我发现如何为这些测试运行提供环境变量的唯一方法是将
dotnet.unitTests.runSettingsPath
配置选项设置为 .runsettings
文件的位置。我不想仅仅为了这一功能而保留这个 .runsettings
文件。当我触发“运行测试”功能时,如何告诉 VS Code 从 .env 文件加载环境变量。
以防万一有人问,我的tasks.json 中没有特殊任务,也没有用于测试运行的launch.json 文件中的特殊条目。看起来 VS Code 足够智能,可以自动找出如何在我的项目中查找、加载和运行测试。
我今天遇到了同样的问题,我的解决方案如下:
test.env
文件,其中包含运行测试所需的环境变量。 (可选:将其添加到我的 .gitignore 以避免对文件进行版本控制,因为每个开发人员都有自己的值)MyProject.Tests.csproj
文件中,指示 .NET 将 env 文件复制到输出目录(例如 bin/Debug/net8.0):<ItemGroup>
<Content Include="*.env">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
dotenv.net
Nuget 包 的引用。有关如何执行此操作的更多信息可以在 Nuget 页面中找到。SetUp
是 NUnit 包中的注释。如果您使用其他测试框架(如 xUnit),您可能需要不同的注释):private const string ENV_FILE = "test.env";
[SetUp]
public void SetUp()
{
if (File.Exists(ENV_FILE))
{
DotEnv.Load(options: new DotEnvOptions(envFilePaths: [ENV_FILE]));
}
}