MSTest 使用规则

支持正确使用 MSTest 的规则。

标识符 名称 说明
MSTEST0002 TestClass应当是有效分析器 测试类(用 [TestClass] 属性标记的类)应遵循以下布局才会被 MSTest 视为有效:
如果未设置 public 属性,应为 internal;如果设置了 public 属性,应为 。
- 它不应为 static
- 它不应为泛型。
MSTEST0003 TestMethodShouldBeValidAnalyzer 测试方法(用 [TestMethod] 属性标记的方法)应遵循以下布局才会被 MSTest 视为有效:
如果未设置 public 属性,应为 internal;如果设置了 public 属性,应为 。
- 它不应为 static
- 它不应为泛型
- 它不应为 abstract
- 返回类型应为 voidTask
- 它不应为 async void
- 它不应为特殊方法(例如终结器或运算符)。
MSTEST0005 TestContextShouldBeValidAnalyzer TestContext 属性应遵循以下布局才有效:
- 它应该是一个属性
如果未设置 public 属性,应为 internal;如果设置了 public 属性,应为 。
- 它不应为 static
- 它不应为只读。
MSTEST0007 UseAttributeOnTestMethodAnalyzer 以下测试属性应仅应用于标记了 TestMethodAttribute 属性的方法:
- [CssIteration]
- [CssProjectStructure]
- [Description]
- [ExpectedException]
- [Owner]
- [Priority]
- [TestProperty]
- [WorkItem]
MSTEST0008 TestInitializeShouldBeValidAnalyzer 标记为 [TestInitialize] 的方法应遵循以下有效的布局:
- 它应为 public
- 它不应为 static
- 它不应为泛型
- 它不应为 abstract
- 它不应采用任何参数
- 返回类型应为 voidTaskValueTask
- 它不应为 async void
- 它不应是特殊方法(终结器、运算符...)。
MSTEST0009 TestCleanupShouldBeValidAnalyzer 标记为 [TestCleanup] 的方法应遵循以下有效的布局:
- 它应为 public
- 它不应为 static
- 它不应为泛型
- 它不应为 abstract
- 它不应采用任何参数
- 返回类型应为 voidTaskValueTask
- 它不应为 async void
- 它不应是特殊方法(终结器、运算符...)。
MSTEST0010 ClassInitializeShouldBeValidAnalyzer 标记为 [ClassInitialize] 的方法应遵循以下有效的布局:
- 它应为 public
- 它应为 static
- 它不应为泛型
- 它应采用 TestContext 类型的一个参数
- 返回类型应为 voidTaskValueTask
- 它不应为 async void
- 它不应是特殊方法(终结器、运算符...)。
MSTEST0011 ClassCleanupShouldBeValidAnalyzer 标记为 [ClassCleanup] 的方法应遵循以下有效的布局:
- 它应为 public
- 它应为 static
- 它不应为泛型
- 它不应采用任何参数
- 返回类型应为 voidTaskValueTask
- 它不应为 async void
- 它不应是特殊方法(终结器、运算符...)。
MSTEST0012 AssemblyInitializeShouldBeValidAnalyzer 标记为 [AssemblyInitialize] 的方法应遵循以下有效的布局:
- 它应为 public
- 它应为 static
- 它不应为泛型
- 它应采用 TestContext 类型的一个参数
- 返回类型应为 voidTaskValueTask
- 它不应为 async void
- 它不应是特殊方法(终结器、运算符...)。
MSTEST0013 AssemblyCleanupShouldBeValidAnalyzer 标记为 [AssemblyCleanup] 的方法应遵循以下有效的布局:
- 它应为 public
- 它应为 static
- 它不应为泛型
- 它不应采用任何参数
- 返回类型应为 voidTaskValueTask
- 它不应为 async void
- 它不应是特殊方法(终结器、运算符...)。
MSTEST0014 DataRowShouldBeValidAnalyzer [DataRow] 实例必须具有以下布局才能有效:
- 它们只能在测试方法上设置
- 参数个数应与方法参数个数匹配
- 自变量类型应与 method 自变量类型匹配
MSTEST0017 AssertionArgsShouldBePassedInCorrectOrder 断言参数应按正确的顺序传递
MSTEST0018 DynamicDataShouldBeValidAnalyzer [DynamicData] 标记的方法还应使用 [TestMethod](或派生属性)进行标记
MSTEST0023 DoNotNegateBooleanAssertionAnalyzer 不要否定布尔断言
MSTEST0024 DoNotStoreStaticTestContextAnalyzer 不要将 TestContext 存储在静态成员中
MSTEST0026 AssertionArgsShouldAvoidConditionalAccessRuleId 避免断言中的条件访问
MSTEST0030 TypeContainingTestMethodShouldBeATestClass 应将包含 [TestMethod] 的类型标记为 [TestClass]
MSTEST0031 DoNotUseSystemDescriptionAttribute “System.ComponentModel.DescriptionAttribute”在测试上下文中不起作用
MSTEST0032 ReviewAlwaysTrueAssertConditionAnalyzer 查看或删除断言,因为其条件已知总是为真
MSTEST0034 UseClassCleanupBehaviorEndOfClass ClassCleanupBehavior.EndOfClass[ClassCleanup] 配合使用
MSTEST0035 UseDeploymentItemWithTestMethodOrTestClassTitle 在测试类或测试方法上只能指定[DeploymentItem]
MSTEST0037 UseProperAssertMethodsAnalyzer 使用正确的 Assert 方法
MSTEST0038 AvoidAssertAreSameWithValueTypesAnalyzer 不要对以下值类型使用 Assert.AreSameAssert.AreNotSame
MSTEST0039 UseNewerAssertThrowsAnalyzer 使用较新的“Assert.Throws”方法
MSTEST0040 AvoidUsingAssertsInAsyncVoidContextAnalyzer 不要在“async void”上下文中断言