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"/>

person Virinchi Varma    schedule 17.09.2020    source источник


Ответы (1)


Я не уверен, что этот подход эффективен, но это сработало для меня.

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

<PropertyGroup>
   <AssemblyFilters>@(UnitTestAssemblies->'%(AssemblyName)'->Distinct(), ' ')</AssemblyFilters>
<PropertyGroup>

Затем я передал $(AssemblyFilters) в качестве аргумента. -filters:"$(AssemblyFilters)"

person Virinchi Varma    schedule 17.09.2020