当前位置:  开发笔记 > 程序员 > 正文

没有断言的单元测试

如何解决《没有断言的单元测试》经验,为你挑选了5个好方法。

偶尔我会遇到一个没有断言的单元测试.我今天早上遇到的特定示例是测试在满足条件时写入日志文件.假设是如果没有抛出错误,则测试通过.

我个人对此没有任何问题,但是编写单元测试似乎有点"代码味道",没有任何关联它的断言.

只是想知道人们对此的看法是什么?



1> David M. Kar..:

这只是一个非常小的测试,应该记录下来.它仅验证它在运行时不会爆炸.关于这样的测试最糟糕的部分是它们呈现出一种虚假的安全感.你的代码覆盖率会上升,但这是虚幻的.气味很难闻.



2> Brad Wilson..:

这将是官方的方式:

// Act
Exception ex = Record.Exception(() => someCode());

// Assert
Assert.Null(ex);



3> ryw..:

如果没有断言,则不是测试.

退出懒惰 - 可能需要一点时间来弄清楚如何在那里得到断言,但值得知道它做了你期望它做的事情.



4> craigb..:

这样的测试闻起来.应检查文件是否已写入,至少修改后的时间可能已更新.

我已经看过很多以这种方式编写的测试,最终没有测试任何东西,即代码不起作用,但它也没有爆炸.

如果您有一些明确的要求,即测试中的代码不会抛出异常并且您想明确地调用这个事实(测试作为需求文档),那么我会做这样的事情:

try
{
  unitUnderTest.DoWork()
}
catch
{
  Assert.Fail("code should never throw exceptions but failed with ...")
}

......但这对我来说仍然有点味道,可能是因为它试图证明是消极的.



5> Mark Cidade..:

这些被称为烟雾测试并且很常见.他们是基本的健全检查.但它们不应该是你拥有的唯一一种测试.你还需要在另一个测试中进行某种验证.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有