设计规则可帮助你创建和维护符合适当设计和良好做法的测试套件。 这些规则侧重于导致可维护的测试代码的测试结构、最佳做法和常见模式。
此类别中的规则
| 规则编号 | 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:为超时处理启用取消令牌。