MSBuild获取测试的程序集名称



我正在生成覆盖率。如果OpenCover过滤器只是+[*],其中一个测试需要很长时间,所以我决定添加程序集名称。但这不是一个有效的方法,因为程序集可能会增加。我想做一些事情,比如从UnitTestAssemblies中提取程序集名称,并将其作为带括号的参数传递给过滤器。

UnitTestAssembly.Filename提供Assembly1.Tests,我希望将Assembly1添加为筛选器。

<ItemGroup>
<UnitTestAssemblies Include="$(ProjectRoot)**bin$(Configuration)*.Tests.dll" />
</ItemGroup>

<Exec Command="$(OpenCoverToolPath)OpenCover.Console.exe 
-target:$(NUnitToolPath)nunit3-console.exe 
-register
-targetargs:%(UnitTestAssemblies.FullPath) 
-filter:&quot;+[Assembly1]* +[Assembly2]*&quot;
-output:$(somepath)%(UnitTestAssemblies.Filename).coverage.xml" 
ContinueOnError="true" Timeout="1800000"/>

我不确定这种方法是否有效,但这对我有效。

<ItemGroup>
<UnitTestAssemblies>
<AssemblyName>+[$([System.String]::Copy('%(Filename)').Replace('.Tests', ''))]*</AssemblyName>
<UnitTestAssemblies>
</ItemGroup>
<PropertyGroup>
<AssemblyFilters>@(UnitTestAssemblies->'%(AssemblyName)'->Distinct(), ' ')</AssemblyFilters>
<PropertyGroup>

然后我传递了$(AssemblyFilters)作为参数。-filters:"$(AssemblyFilters)"

最新更新