为什么我的JUnit测试用例在作为Test Suite和单个Junit文件运行时会显示不同的输出

时间:2012-01-24 12:31:41

标签: java mysql unit-testing junit

我有一组JUnit测试文件以及一个测试套件(Suite类)文件,该文件包含对所有单个Junit测试文件的引用。

所有都是面向数据库的。使用的数据库是Mysql,我使用Eclipse IDE来运行测试。

当单独运行每个文件时,我得到正确的值并且断言正确但是从测试套件运行时它会显示不同的值。

我已经使每个JUnit测试文件使用不同的数据库名称独立访问数据库(即使表结构相同)

我们是否需要阻止JUnit测试用例并行运行/需要验证数据库相关语句?

2 个答案:

答案 0 :(得分:2)

我建议你研究一下:

  • 任何静态数据(单例,静态方法等)
  • 测试的顺序(某些测试是否可能依赖于另一个测试创建,擦除或修改的某些数据?)
  • 如果您使用的是允许套件范围的setUp或tearDown方法的框架,它们是否会以某种方式破坏单个测试?
  • 既然您正在使用数据库,那么您的代码是否可能是事务性的,但是在套件中运行测试时,某些事务不会在正确的时间提交(例如,不是在整个套件完成之前) ?

答案 1 :(得分:0)

这可能有两个原因。

一个是你没有正确构建套件,有些测试与其他测试共享资源。

另一个是当你完成测试时,你不回滚数据库,所以下一个测试发现数据库处于错误状态。