Azure Devops 单元测试未找到“.deps.json”文件
Azure Devops UnitTest not finding ".deps.json" file
我创建了一个 asp.net 核心 webapi 项目并为其创建了一个对应的 xUnitTest。当我在本地机器上 运行 进行 UnitTest 时,UnitTest 运行s 没有任何问题。
我使用 XUnit 及其 visualstudio 运行ner。
以下是我的 UnitTest 项目的参考资料:
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="Moq" Version="4.13.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.assert" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.core" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.execution" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
当我现在 运行 通过 Azure Devops 进行单元测试时,他们 运行 成功并给我以下输出:
Created test run: 156
Publishing test results: 35
Publishing test results to test run '156'.
TestResults To Publish 35, Test run id:156
Test results publishing 35, remaining: 0. Test run id: 156
Published test results: 35
Publishing Attachments: 2
Failed tests: 0; Total tests: 35;
我遇到的问题是,后来出现异常,找不到 ".deps.json" 文件:
Unable to find d:\a\s\<project-path>\obj\Release\netcoreapp3.1\<project>.deps.json. Make sure test project has a nuget reference of package "Microsoft.NET.Test.Sdk".
然后我检查了是否可以搜索二进制文件夹,但是没有找到测试项目。
我还尝试使用 "DotNetCoreCLI@2" 任务和 "VSTest@2" 任务,两者都会产生相同的问题。
这是我使用的 yaml 文件:
# UnitTests
- task: VSBuild@1
inputs:
solution: '**/<projectnamespace>.UnitTests.csproj'
vsVersion: 16.0 #also tried without this line
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**UnitTests.dll'
arguments: '--configuration $(buildConfiguration)'
- task: VSTest@2
inputs:
testSelector: testAssemblies
testAssemblyVer2: '**bin\**UnitTests*.dll'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
diagnosticsEnabled: true
codeCoverageEnabled: true
两个测试任务都会运行测试然后是"failed"因为找不到“.deps.json”文件。
这个问题有两个问题:
- 找到的单元测试位于“/obj/release”文件夹中,但没有 *.deps.json 文件被复制到该文件夹中。在构建任务中,您可以看到 *.deps.json 已成功构建并复制:
Copying file from
"d:\a\s\APPNAME\bin\Release\netcoreapp3.1\APPNAME.deps.json" to
"d:\a\s..."
- 我遇到的第二个问题是,单元测试中的引用引用了 .NET Standard 2.1 解决方案,输出中似乎不包含任何 *.deps.json。
这是我的固定 yaml 文件:
# UnitTests
- task: VSBuild@1
displayName: 'Build Test'
inputs:
solution: '**/APPNAME.UnitTests.csproj'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
testSelector: testAssemblies
testAssemblyVer2: 'APPNAME\bin\Release\netcoreapp3.1\APPNAME.UnitTests.dll' #Full path to test dll
testFiltercriteria: FullyQualifiedName~APPNAME.UnitTests # Further namespace filter
runInParallel: false
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
diagnosticsEnabled: true
除了使用 !**\obj\**
忽略 obj
文件夹外,从 .NET 5 开始,我们还必须忽略 bin
文件夹中的 ref
文件夹; !**\bin\**\ref\**
。不忽略这会导致找到 2 个匹配 UnitTests.dll 的文件,ref
文件夹中的 dll 将失败并出现错误:UnitTests.deps.json 找不到文件
现在我们的测试任务看起来像这样:
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*UnitTests.dll
!**\*TestAdapter.dll
!**\obj\**
!**\bin\**\ref\**
searchFolder: '$(System.DefaultWorkingDirectory)'
runTestsInIsolation: true
codeCoverageEnabled: true
我创建了一个 asp.net 核心 webapi 项目并为其创建了一个对应的 xUnitTest。当我在本地机器上 运行 进行 UnitTest 时,UnitTest 运行s 没有任何问题。 我使用 XUnit 及其 visualstudio 运行ner。 以下是我的 UnitTest 项目的参考资料:
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="Moq" Version="4.13.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.assert" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.core" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.execution" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
当我现在 运行 通过 Azure Devops 进行单元测试时,他们 运行 成功并给我以下输出:
Created test run: 156
Publishing test results: 35
Publishing test results to test run '156'.
TestResults To Publish 35, Test run id:156
Test results publishing 35, remaining: 0. Test run id: 156
Published test results: 35
Publishing Attachments: 2
Failed tests: 0; Total tests: 35;
我遇到的问题是,后来出现异常,找不到 ".deps.json" 文件:
Unable to find d:\a\s\<project-path>\obj\Release\netcoreapp3.1\<project>.deps.json. Make sure test project has a nuget reference of package "Microsoft.NET.Test.Sdk".
然后我检查了是否可以搜索二进制文件夹,但是没有找到测试项目。 我还尝试使用 "DotNetCoreCLI@2" 任务和 "VSTest@2" 任务,两者都会产生相同的问题。 这是我使用的 yaml 文件:
# UnitTests
- task: VSBuild@1
inputs:
solution: '**/<projectnamespace>.UnitTests.csproj'
vsVersion: 16.0 #also tried without this line
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**UnitTests.dll'
arguments: '--configuration $(buildConfiguration)'
- task: VSTest@2
inputs:
testSelector: testAssemblies
testAssemblyVer2: '**bin\**UnitTests*.dll'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
diagnosticsEnabled: true
codeCoverageEnabled: true
两个测试任务都会运行测试然后是"failed"因为找不到“.deps.json”文件。
这个问题有两个问题:
- 找到的单元测试位于“/obj/release”文件夹中,但没有 *.deps.json 文件被复制到该文件夹中。在构建任务中,您可以看到 *.deps.json 已成功构建并复制:
Copying file from "d:\a\s\APPNAME\bin\Release\netcoreapp3.1\APPNAME.deps.json" to "d:\a\s..."
- 我遇到的第二个问题是,单元测试中的引用引用了 .NET Standard 2.1 解决方案,输出中似乎不包含任何 *.deps.json。
这是我的固定 yaml 文件:
# UnitTests
- task: VSBuild@1
displayName: 'Build Test'
inputs:
solution: '**/APPNAME.UnitTests.csproj'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
testSelector: testAssemblies
testAssemblyVer2: 'APPNAME\bin\Release\netcoreapp3.1\APPNAME.UnitTests.dll' #Full path to test dll
testFiltercriteria: FullyQualifiedName~APPNAME.UnitTests # Further namespace filter
runInParallel: false
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
diagnosticsEnabled: true
除了使用 !**\obj\**
忽略 obj
文件夹外,从 .NET 5 开始,我们还必须忽略 bin
文件夹中的 ref
文件夹; !**\bin\**\ref\**
。不忽略这会导致找到 2 个匹配 UnitTests.dll 的文件,ref
文件夹中的 dll 将失败并出现错误:UnitTests.deps.json 找不到文件
现在我们的测试任务看起来像这样:
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*UnitTests.dll
!**\*TestAdapter.dll
!**\obj\**
!**\bin\**\ref\**
searchFolder: '$(System.DefaultWorkingDirectory)'
runTestsInIsolation: true
codeCoverageEnabled: true