问题描述
我有一个NUnit
测试项目(Foo.Test
)的解决方案。
+-- src
| +-- Foo.Gui
| +-- Foo.Test
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<Compile Remove="TestResults**" />
<EmbeddedResource Remove="TestResults**" />
<None Remove="TestResults**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="GitVersionTask" Version="5.1.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..Foo.GuiFoo.Gui.csproj" />
</ItemGroup>
</Project>
以下调用用于测试:
dotnet test --no-build -c Release -v n src\%TESTPROJECT%\%TESTPROJECT%.csproj --logger "trx;LogFileName=testreport.trx"
如果我在本地运行,则一切正常:
生成服务器上的相同调用未找到任何测试:
gitLab-ci.yml
test:solution:
stage: test
script:
- dotnet test --no-build -c Release -v n src$env:TESTPROJECT$env:TESTPROJECT.csproj --logger "trx;LogFileName=testreport.trx"
after_script:
- trx2junit src$env:TESTPROJECTTestresults estreport.trx
artifacts:
reports:
junit: src$env:TESTPROJECTTestresults estreport.xml
有人得到了一个提示,什么可能是错误的?测试项目(Foo.Test.dll)在构建构件中可用并存在。
推荐答案
在测试之前,我必须在构建管道上添加额外的dotnet restore
命令,以恢复project.assets.json
。现在一切正常,
test:solution:
stage: test
script:
- dotnet restore src
- dotnet test --no-build -c Release -v n src$env:TESTPROJECT$env:TESTPROJECT.csproj --logger "trx;LogFileName=testreport.trx"
after_script:
- trx2junit src$env:TESTPROJECTTestresults estreport.trx
artifacts:
reports:
junit: src$env:TESTPROJECTTestresults estreport.xml