MSBuild 获取测试的程序集名称
MSBuild get assembly names of tests
我正在努力生成报道。如果 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:"+[Assembly1]* +[Assembly2]*"
-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)"
我正在努力生成报道。如果 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:"+[Assembly1]* +[Assembly2]*"
-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)"