日期:2014-05-20  浏览次数:20791 次

JUnit中什么时候使用assertTrue, assertFalse语句
在JUnit中每个test case里至少要有一个assert语句这一点没有问题。

但是在准备test case需要的文件时,例如在setBeforeClass()方法里复制文件,如果要复制的文件不存在或者复制出错,就要抛出异常,让case停掉不能继续跑。
这个时候,在setBeforeClass里使用assertTrue合理吗?
或者还是自己去写一个与assertTrue完全一样功能的代码,判断复制是否成功,如果不成功就抛出异常。
也即是说,严格的控制assert语句只能在@Test方法中使用。

我觉得没有必要,大家怎么看呢?!

------解决方案--------------------
看情况,我理解你的意思是说只有在做测试检查逻辑的时候才使用assertTrue,其它的时候如数据初始化过程的时候不使用assertTrue(使用其它的进行区分)。

如果只是规范上要求这样我觉得没有必要了。

如果是你想在正常的检查逻辑中进行功能的扩展,就可以进行区分。比如,统计检查的数量,修改丰富错误信息格式,写入其它日志等。
------解决方案--------------------
单元测试的测试文件或者数据库的话,最好使用 Mock 工具来做,也就是假的,比如用 EasyMock 模拟一下什么的。

因为在 Unit Test 进行之前的错误而导致 UT 失败是不可容忍的,单元测试应尽量避免这种情况的发生,像在执行单元测试用例之前还需要准备一大堆的文件、数据表数据之类的。
------解决方案--------------------
在setBeforeClass里面assert确实有点奇怪
------解决方案--------------------
个人觉得在setBeforeClass里使用assertTrue不太合理
准备工作没做好的话
抛异常比较好,表示错误,case没有成功运行起来
而不是case失败