我团队中的一些程序员有时会编写单元测试来调用方法,获取结果但忘记调用正确的Assert
方法来实际检查正在发生的事情。
我想知道如果没有进行验证,我是否可以做任何配置来强制 MSTest 使测试失败。我记得在 DUnit 中看到过类似的东西,但在 Visual Studio 中找不到。
我团队中的一些程序员有时会编写单元测试来调用方法,获取结果但忘记调用正确的Assert
方法来实际检查正在发生的事情。
我想知道如果没有进行验证,我是否可以做任何配置来强制 MSTest 使测试失败。我记得在 DUnit 中看到过类似的东西,但在 Visual Studio 中找不到。
查看Roy Osherove和 co 的 Test-Lint。这是测试代码的静态代码分析。
我在公开 alpha/beta 版发布时尝试过一次。表现得非常好。但是没有尝试这种特定的需求。我不认为 MSTest 或大多数单元测试框架会防范这种开箱即用的情况。
阿奎那也有一个有效的评论。教育可能比检查和棍子更好。您甚至可以创建自定义规则来捕获流氓断言。检查该工具。
从该工具的主页,
它检测到什么问题?
目前,Test Lint 发现了一组常见问题:
* 测试中缺少断言
我没有听说过这样的功能。没有断言的单元测试只是测试没有抛出错误,在这种情况下通常每次都会通过。
我很惊讶您的程序员实际上是在没有断言的情况下编写测试,这似乎非常不专业。我建议他们阅读一些关于测试驱动开发的在线课程,通常你编写一个测试失败,然后进行编程更改以使其通过(在这种情况下 Assert.IsTrue(true) 甚至不会开始有道理。
同时提供模板:
[Test]
public void TestCase
{
//Setup
//Run Test
//Process Results
//Assert
}
我强烈建议购买此截屏视频:http: //tekpub.com/productions/ft_tdd_wilson
它为如何编写单元测试以及如何正确遵循 TDD 提供了一个好主意。