我在 .NET 5 中有一个解决方案,在 NUnit 中有一些单元测试需要一些秘密才能正常工作。使用本地用户机密在 Visual Studio 中进行测试工作正常,但现在我想尝试使用 Azure Key Vault 进行集成并在管道内运行单元测试。
我添加了任务AzureKeyVault@2
,根据日志,秘密下载得很好,但在接下来的步骤中,单元测试失败,因为它在尝试从IConfiguration
.
这是我的azure-pipelines.yml
(仅相关部分)。
- job: Init
displayName: Unit Testing
variables:
solutionToBuild: 'Solution.sln'
unitTestsProject: 'UnitTests\UnitTests.csproj'
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
displayName: 'Restore Packages'
inputs:
command: 'restore'
projects: '$(solutionToBuild)'
verbosityRestore: minimal
feedsToUse: 'select'
- task: DotNetCoreCLI@2
displayName: 'Build Solution'
inputs:
command: 'build'
projects: '$(solutionToBuild)'
arguments: '-c $(buildConfiguration)'
- task: AzureKeyVault@2
displayName: 'Configure Key Vault'
inputs:
azureSubscription: '**-etc-**'
KeyVaultName: '**key-vault-name**'
- task: DotNetCoreCLI@2
displayName: 'Run Unit Tests'
inputs:
command: 'test'
projects: '$(unitTestsProject)'
arguments: '-c $(buildConfiguration) --collect:"XPlat Code Coverage"'
publishTestResults: true
我创建了这个当前在管道中失败的基本测试。我正在使用该Host.CreateDefaultBuilder()
方法来初始化所有单元测试。
[Test]
[TestCase("secret-key-1")]
[TestCase("secret-key-1")]
public void TestSecrets(string key)
{
Assert.NotNull(_config[key]);
Assert.IsNotEmpty(_config[key]);
}
是AzureKeyVault@2
传递任务的密钥和值DotNetCoreCLI@2
还是我需要额外的步骤?我读到您可以使用空的FileTransform@1appsettings.json
步骤进行操作,但我无法使其工作。有没有正确的方法来实现这一目标?