在JUnit中每个test case里至少要有一个assert语句这一点没有问题。
但是在准备test case需要的文件时,例如在setBeforeClass()方法里复制文件,如果要复制的文件不存在或者复制出错,就要抛出异常,让case停掉不能继续跑。
这个时候,在setBeforeClass里使用assertTrue合理吗?
或者还是自己去写一个与assertTrue完全一样功能的代码,判断复制是否成功,如果不成功就抛出异常。
也即是说,严格的控制assert语句只能在@Test方法中使用。
我觉得没有必要,大家怎么看呢?!
因为在 Unit Test 进行之前的错误而导致 UT 失败是不可容忍的,单元测试应尽量避免这种情况的发生,像在执行单元测试用例之前还需要准备一大堆的文件、数据表数据之类的。看情况,我理解你的意思是说只有在做测试检查逻辑的时候才使用assertTrue,其它的时候如数据初始化过程的时候不使用assertTrue(使用其它的进行区分)。
如果只是规范上要求这样我觉得没有必要了。
如果是你想在正常的检查逻辑中进行功能的扩展,就可以进行区分。比如,统计检查的数量,修改丰富错误信息格式,写入其它日志等。个人觉得在setBeforeClass里使用assertTrue不太合理
准备工作没做好的话
抛异常比较好,表示错误,case没有成功运行起来
而不是case失败
在setBeforeClass里面assert确实有点奇怪