本篇翻译于Jakub Jareš的Supercharge your testing experience with MSTest.Analyzers – .NET Blog (microsoft.com) MSTest 附带一组分析器,用于检查您的测试代码并指出常见的错误和陷阱。这些错误可能很微妙,并导致测试框架完全忽略您的测试。 我们从 3.2.0 版本就开始提供这些分析器了,但在最新的 3.5.1 版本中,我们添加了一些我们认为您不应错过的分析器。 遗漏的测试 一个常见问题是当您忘记在类上添加 [TestClass] 时。MSTest 将无法知道类中有测试,也不会运行它们: public class MyTests { [TestMethod] public async Task TestMethod1() { Assert.Fail(); } } 如果没有 MSTest.Analyzers,此代码在构建时不会出现警告或信息提示。运行测试时也不会出现测试失败的情况。由于类上没有 [TestClass] 属性,MSTest 会出于性能原因跳过整个类,并且您的测试将永远不会被找到。 但是使用分析器时您会在构建过程中收到一条信息提示: 我们建议将此信息提示升级为警告,甚至是构建错误。可以通过在 .editorconfig 文件中添加以下这行代码来实现 [*.cs] # MSTEST0030: Type containing '[TestMethod]' should be marked with '[TestClass]' dotnet_diagnostic.MSTEST0030.severity = warning 为什么默认情况下这不是警告? 您可能会问为什么 MSTEST0030 默认是一条信息提示而不是默认的警告。原因是我们不能在 MSTest v3 中引入重大变更,而上述代码是一个常见的模式,用于从基类重用测试。 public class MyTestsBase { [TestMethod] public async Task CommonTestMethod() { } } [TestClass] public class MyTests : MyTestsBase { [TestMethod] public async Task TestMethod1() { Assert.Fail();
원문출처 : https://devblogs.microsoft.com/dotnet-ch/%E4%BD%BF%E7%94%A8-mstest-analyzers-%E5%A2%9E%E5%BC%BA%E6%82%A8%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BD%93%E9%AA%8C
원문출처 : https://devblogs.microsoft.com/dotnet-ch/%E4%BD%BF%E7%94%A8-mstest-analyzers-%E5%A2%9E%E5%BC%BA%E6%82%A8%E7%9A%84%E6%B5%8B%E8%AF%95%E4%BD%93%E9%AA%8C