java - 运行 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。
解决方案
推荐阅读
- javascript - 单击 dijit/layout/AccordionPane 更新图像
- javascript - 在环回 4 中创建 requestBody 的最佳实践是什么?
- pyspark - Marge 使用 pyspark 中的笔记本在 dbutils 中移动/复制大数据文件
- java - 在 testNG 中管理大量特定于环境的测试数据
- python - if else 的 Python 缩进级别
- javascript - 带有 html 网站或 html webiste 的 create-react-app 项目单元添加反应组件
- excel - Excel:如果两行或多行在两列(A 和 B)中包含匹配值,请确保将它们的值合并到它们的列 C
- android - Android WebView 应用程序未保存 Cookie
- swift - 每次重新打开应用程序时从 SQLite 读取数据的正确方法是什么
- typescript - 索引 [1] 处的模块属于“未定义”类型。检查您的导入语句和模块的类型