Рассмотрим следующий пример воспроизведения (код модульного теста MS Test):
using System.Diagnostics.CodeAnalysis;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
SharedMethod();
}
[TestMethod, ExcludeFromCodeCoverage]
public void TestMethod2()
{
SharedMethod();
// This is a performance test which will fail during coverage analysis.
Assert.Fail();
}
private void SharedMethod()
{
// Should be green
if (true) ; // NOOP
}
}
}
TestMethod2
— это метод тестирования производительности, который будет успешным во время «обычного» модульного тестирования, но не удастся во время анализа покрытия кода (из-за дополнительных накладных расходов). Это нормально. Я просто хочу, чтобы этот метод игнорировался во время анализа покрытия кода, чтобы мой SharedMethod
отображался как «зеленый» (потому что он успешно покрыт TestMethod1
.
Согласно JetBrains, фильтры покрытия должны сделайте это, и да, для ExcludeFromCodeCoverageAttribute
будет активен фильтр:
Однако запуск Extensions/ReSharper/Unit Tests/"Cover All Tests From Solution" по-прежнему учитывает мой исключенный тест при раскрашивании моего кода:
Что я сделал не так? И как (легко) исключить тесты производительности из анализа покрытия кода?
TestMethod2
уже не отображается в окне покрытия (вероятно, потому что существует фильтр времени выполнения), поэтому я не могу добавить для него фильтр покрытия. - person Heinzi   schedule 31.03.2020