通过


MSTest 设计规则

设计规则可帮助你创建和维护符合适当设计和良好做法的测试套件。 这些规则侧重于导致可维护的测试代码的测试结构、最佳做法和常见模式。

此类别中的规则

规则编号 Title Severity 修复可用
MSTEST0004 在面向对象编程中,公共类型应为测试类。 信息 是的
MSTEST0006 避免使用 ExpectedException 特性。 信息 是的
MSTEST0015 不应忽略测试方法。 无(选择加入)
MSTEST0016 测试类应包含测试方法。 信息
MSTEST0019 首选 TestInitialize 而不是构造函数。 无(选择加入) 是的
MSTEST0020 首选构造函数而不是 TestInitialize。 无(选择加入) 是的
MSTEST0021 首选 Dispose 而不是 TestCleanup。 无(选择加入) 是的
MSTEST0022 首选 TestCleanup 而不是 Dispose。 无(选择加入) 是的
MSTEST0025 首选使用 Assert.Fail 而不是始终为假的条件。 信息 是的
MSTEST0029 公共方法应为测试方法。 信息 是的
MSTEST0036 请勿使用阴影。 警告
MSTEST0044 建议首选 TestMethod 而不是 DataTestMethod。 信息 是的
MSTEST0045 对超时使用协同取消。 信息 是的

常见应用场景

测试类结构

创建测试类时,这些规则有助于确保正确设计:

  • MSTEST0004:使帮助程序类保持内部状态,仅测试类应是公共类。
  • MSTEST0016:确保测试类至少包含一个测试方法。
  • MSTEST0029:测试类中的公共方法应为测试方法。

初始化模式

MSTest 支持构造函数和 TestInitialize 方法。 通过这些互斥规则,可以强制实施一致的模式:

  • MSTEST0019:对初始化强制实施 TestInitialize(适用于异步方案)。
  • MSTEST0020:强制初始化构造函数(更适合只读字段)。

清理模式

同样,在 Dispose 和 TestCleanup 之间进行选择:

  • MSTEST0021:实施Dispose模式进行资源清理。
  • MSTEST0022:强制 TestCleanup 进行清理。

更好的断言

  • MSTEST0006:使用 Assert.ThrowsExactly 而不是 [ExpectedException] 来提高精度。
  • MSTEST0025:使用 Assert.Fail 而不是 Assert.IsTrue(false)。

测试质量

  • MSTEST0015:标记被忽略的测试(可选规则)。
  • MSTEST0036:避免隐藏基类成员。
  • MSTEST0044:除非需要数据驱动测试,否则请使用 TestMethod。
  • MSTEST0045:为超时处理启用取消令牌。