java - 使用 JUnit 运行大量集成测试的更好方法是什么?

标签 java junit integration-testing

使用 JUnit 运行大量集成测试的最佳方法是什么?

我粗略地发现下面的代码可以运行所有测试......但它有一个巨大的缺陷。每个类中的tearDown() 方法只有在它们全部运行完毕后才会被调用。

public class RunIntegrationTests extends TestSuite {
   public RunIntegrationTests(){
   }

   public static void main (String[] args){
      TestRunner.run(testSuite());
   }

   public static Test testSuite(){

      TestSuite result = new TestSuite();

      result.addTest(new TestSuite(AgreementIntegrationTest.class));
      result.addTest(new TestSuite(InterestedPartyIntegrationTest.class));
      result.addTest(new TestSuite(WorkIntegrationTest.class));
      // further tests omitted for readability

      return result;
   }
}

正在运行的类连接到数据库、加载对象并将其显示在 JFrame 中。我重写了 setVisible 方法来启用测试。在我们的构建机器上,当运行上面的代码时,java 虚拟机会耗尽内存,因为它必须从数据库加载的对象非常大。如果在每个类完成后调用tearDown()方法,则可以解决内存问题。

有更好的方法来运行它们吗?顺便说一句,我必须使用 JUnit 3.8.2 - 我们仍在使用 Java 1.4 :(

最佳答案

不确定这是否是问题所在,但根据JUnit Primer您应该直接添加测试,而不是使用 TestSuite:

  result.addTest(new AgreementIntegrationTest()));
  result.addTest(new InterestedPartyIntegrationTest()));
  result.addTest(new WorkIntegrationTest()));

关于java - 使用 JUnit 运行大量集成测试的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2027243/

相关文章:

java - 嵌入式 glassfish 容器的 JUnit 测试错误

java - 由于 IllegalState 异常,Android TestRunner 失败

java - 在游戏循环中等待 FutureTask 完成

java - 如何通过按钮和另一个方法调用一个方法

java - 无法解析静态方法 junit 断言

java - 使用 Eclipse 执行 JUnit 时出现内部错误

spring - 并行运行 Spock 测试

android - 机器人测试应该是独立的

android - 警告 :Conflict with dependency 'com.android.support:support-annotations' (25. 0.1)

java - 在任何文本字段上按回车键返回按钮单击