9

我团队中的一些程序员有时会编写单元测试来调用方法,获取结果但忘记调用正确的Assert方法来实际检查正在发生的事情。

我想知道如果没有进行验证,我是否可以做任何配置来强制 MSTest 使测试失败。我记得在 DUnit 中看到过类似的东西,但在 Visual Studio 中找不到。

4

2 回答 2

3

查看Roy Osherove和 co 的 Test-Lint。这是测试代码的静态代码分析。

我在公开 alpha/beta 版发布时尝试过一次。表现得非常好。但是没有尝试这种特定的需求。我不认为 MSTest 或大多数单元测试框架会防范这种开箱即用的情况。

阿奎那也有一个有效的评论。教育可能比检查和棍子更好。您甚至可以创建自定义规则来捕获流氓断言。检查该工具。

从该工具的主页,

它检测到什么问题?
目前,Test Lint 发现了一组常见问题:
* 测试中缺少断言

于 2012-08-28T04:53:31.310 回答
2

我没有听说过这样的功能。没有断言的单元测试只是测试没有抛出错误,在这种情况下通常每次都会通过。

我很惊讶您的程序员实际上是在没有断言的情况下编写测试,这似乎非常不专业。我建议他们阅读一些关于测试驱动开发的在线课程,通常你编写一个测试失败,然后进行编程更改以使其通过(在这种情况下 Assert.IsTrue(true) 甚至不会开始有道理。

同时提供模板:

[Test]
public void TestCase
{
    //Setup
    //Run Test
    //Process Results
    //Assert
}

我强烈建议购买此截屏视频:http: //tekpub.com/productions/ft_tdd_wilson

它为如何编写单元测试以及如何正确遵循 TDD 提供了一个好主意。

于 2012-08-27T21:23:47.340 回答