首页 > 解决方案 > 运行 JUnit 测试 Javafx 时堆空间已满

问题描述

我正在为我的 Javafx 应用程序编写很多 JUnit 测试。到目前为止,我已经进行了 170 次测试,但从现在开始,java.lang.OutOfMemoryError: Java heap space当我运行所有测试时,我总是得到一个。然后我查看了运行测试时的资源消耗,每次新测试时内存使用量都会增加 40MB,但我认为在测试后使用的内存应该再次下降还是?在测试 JavaFx 应用程序(几乎所有测试都是 GUI 测试)时,内存使用量增加是否正常,或者您是否必须手动调用垃圾收集器或类似的东西?我对 JUnit 测试比较陌生,所以如果我说错了,请纠正我。

我使用这两种方法在每次测试之前进行设置,在测试之后进行清理。

@BeforeEach
public void setup() throws Exception {
    stage = FxToolkit.registerPrimaryStage();
    app = (MyApplication) FxToolkit.setupApplication(MyApplication.class);
    FxToolkit.showStage();
    WaitForAsyncUtils.waitForFxEvents();
}

@AfterEach
public void afterEachTest() throws Exception {

    FxToolkit.hideStage();
    release(new KeyCode[]{});
    release(new MouseButton[]{});
    FxToolkit.cleanupStages();
    FxToolkit.cleanupApplication(app);
}

编辑:我是否必须在afterEachTest()之后将应用程序设置为空FxToolkit.cleanupApplication(app)

EDIT2:我敢肯定,测试本身不会超出内存,因为它们是轻量级的。可能是问题所在,JUnit 在所有测试运行之前不会释放任何内存?我目前正在使用 JUnit 5。

标签: javaunit-testingjavafxjunitheap-memory

解决方案


推荐阅读