【问题标题】:Why my JUnit test cases exhibit different output when run as a Test Suite and individual Junit file为什么我的 JUnit 测试用例在作为测试套件和单独的 Junit 文件运行时会显示不同的输出
【发布时间】:2012-02-17 16:48:42
【问题描述】:

我有一组 JUnit 测试文件和一个测试套件(套件类)文件,其中包含对所有单个 Junit 测试文件的引用。

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

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

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

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

【问题讨论】:

  • 你可能在某处有一些静态方法或属性。

标签: java mysql unit-testing junit


【解决方案1】:

我建议你看看:

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

【讨论】:

    【解决方案2】:

    发生这种情况的原因有两个。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多