请考虑以下repro示例(MS测试单元测试代码):
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
覆盖。)>
[According to JetBrains,coverage过滤器应该这样做,是的,ExcludeFromCodeCoverageAttribute
有一个激活的过滤器:
但是,运行扩展程序/ ReSharper /单元测试/“从解决方案覆盖所有测试”在为代码着色时仍会考虑我排除的测试:
我做错了什么?以及如何(轻松)从代码覆盖率分析中排除性能测试?
请考虑以下repro示例(MS测试单元测试代码):使用System.Diagnostics.CodeAnalysis;使用Microsoft.VisualStudio.TestTools.UnitTesting;命名空间UnitTestProject1 {[TestClass] ...
(这是基于我发现的解决方法的自我解答。如果您找到了此问题的实际解决方案,请随意添加您自己的答案。)