Unit testing 如果没有断言,我可以强制单元测试失败吗?

Unit testing 如果没有断言,我可以强制单元测试失败吗?,unit-testing,mstest,Unit Testing,Mstest,我团队中的一些程序员有时编写单元测试,调用方法,得到结果,但忘记调用适当的Assert方法来实际检查发生了什么 我想知道如果没有进行验证,是否有任何配置可以强制MSTest通过测试。我记得在DUnit中看到过类似的东西,但在Visual Studio中找不到。我没有听说过这样的功能。没有断言的单元测试只是测试没有抛出错误,在这种情况下,通常每次都会通过 我很惊讶,你的程序员实际上是在编写没有断言的测试,这似乎很不专业。我建议他们阅读一些关于测试驱动开发的在线课程,在这些课程中,通常您编写的测试失

我团队中的一些程序员有时编写单元测试,调用方法,得到结果,但忘记调用适当的
Assert
方法来实际检查发生了什么


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

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

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

还提供模板:

[Test]
public void TestCase
{
    //Setup
    //Run Test
    //Process Results
    //Assert
}
我强烈建议您购买此屏幕广播:

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

请检查并合作。它是测试代码的静态代码分析

当它用于公共alpha/beta版时,我试过一次。它表现得很好。但是没有试过这种特殊的需求。我不认为MSTest或大多数单元测试框架会防止这种开箱即用的情况

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

从工具的主页上

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


也许编写一个单元测试来扫描所有的单元测试方法并查找断言代码?@oɔɯǝɹ但是在编写这些测试时可能会出现错误,因此您还需要测试测试测试这些测试的测试。如果您能让这项工作正常进行,那么希望看到一堆断言代码。IsTrue(true);在你的codebase@o是的,你也可以测试一下。但是aquinas有一个很好的观点。我不认为有一个简单的方法可以做到这一点。使用代码检查。你标记了tdd,如果你使用tdd,你就不会面临这种错误,因为第一个单元测试应该失败。这是度量驱动组织的副作用。例如,如果你如果测试覆盖率下降1%,那么构建将失败,签入将被拒绝。你会看到很多类似的“过程游戏”。然而,使用TDD方法,测试覆盖率永远不会下降。而且“欺骗系统”会导致程序员受到严重警告。这是一种可怕的编程方法。通常我不应该。但是在企业编码中,奇怪的事情已经发生了。这是开发人员对TDD“虚假/不充分的认可”的副作用。专业性有时不如我们希望的那样丰富。