将 NUnit 的 appsettings.json 放置在代理上以在 Azure DevOps 管道中使用

问题描述 投票:0回答:1

我正在使用 Azure DevOps 管道来执行单元测试并将我的 Blazor Server 应用程序部署到代理。我使用

NUnit
测试框架和
PostgreSQL
作为数据库。对于单元测试,我使用单独的测试数据库,其中 ConnectionString 存储在我的测试项目的
appsettings.json
中。但是
appsettings.json
没有签入 Git,因为它的内容是或应该是不同的,具体取决于应用程序运行的位置。因此,代理上缺少
appsettings.json

我尝试将包含所需内容的

appsettings.json
手动放入构建测试项目的
C:\agent\_work\...\...\TestProject
文件夹中。我希望
appsettings.json
保留在这个文件夹中并被我的测试项目选中。但在项目重建之前,该文件夹已被管道删除。

接下来我尝试的是将

appsettings.json
放置到管道构建文件夹之外的位置,并为测试项目提供
appsettings.json
的绝对路径。到目前为止这有效。但我对此不太满意,因为这意味着我必须将我的
appsettings.json
放在本地电脑上完全相同的路径上。我认为
appsettings.json
属于实际项目附近的某个地方。

所以我的目标是为我的代理和我的本地电脑提供不同

appsettings.json
。我也不想在管道中定义代理
appsettings.json
,因为这似乎不是解决这个问题的干净解决方案,因为这些设置实际上只涉及代理。 可以实现这个目标吗?

更新: 我通过让我的测试项目在项目文件夹和外部绝对路径中搜索

appsettings.json
,改进了项目文件夹外部的
appsettings.json
的临时解决方案。但我还是觉得不太理想。

continuous-integration nunit blazor-server-side appsettings azure-devops-self-hosted-agent
1个回答
0
投票

根据您的描述,我了解您在运行管道代理作业时需要为测试项目使用不同的

appsettings.json
文件,其中存储有不同的ConnectionStrings;由于同样的原因,
appsettings.json
不会推送到 Git 存储库。

由于 Git 版本控制的好处,您想创建不同的分支并在其中包含不同的

appsettings.json
文件吗?然后,您可以在运行管道时从不同分支选择不同的源,而不必担心
appsettngs.json

中的内容

另一方面,您也可以考虑使用

复制文件任务
作为自动复制 appsettings.json 文件的解决方法,而不是手动更改/复制
appsettings.json
文件到管道工作目录中。如果您使用此任务从本地代理计算机上的共享路径复制文件,请确保本地代理服务/进程具有足够的权限来访问该路径。如果您希望从存储库中签出
appsetting.json
,请注意,您需要首先将它们推送到存储库的不同路径中,然后您也可以使用此任务将预期的
appsettings.json
文件复制到
$(Build.SourcesDirectory)\**\TestProject
的路径。

© www.soinside.com 2019 - 2024. All rights reserved.