通过测试检测生产代码中的资源泄漏

问题描述 投票:0回答:2

我正在尝试寻找是否有一种方法可以在测试中检测资源泄漏。与 junit 或任何其他库一起使用。

上次,我使用 junit5 @TempDir 并且我的输出流未关闭,它抛出无法删除临时文件夹。它没有列出正确的原因,我也无法在网上找到。我只是猜测,我检查了我是否关闭了我的 FileOutputStream ,就是这样。然后它开始工作。 junit也不例外。

但这不是很有用。有没有一个好方法可以在测试中查找是否有任何资源未关闭。

java kotlin junit5 resource-leak
2个回答
0
投票

一般资源泄漏

一般考虑静态代码分析来检测资源泄漏问题。例如,声纳有一些帮助:https://rules.sonarsource.com/java/tag/leak/RSPEC-2095/

JUnit 特有的泄漏

当然,静态代码分析器可能无法发现无法检测资源的问题,例如对于

@TempDir
,因此您应该直接向 JUnit 团队建议...甚至提供 PR!


0
投票

最近发现了一个很棒的工具,与其说是测试,不如说它更像是一个 linter。或正如他们所说的静态分析仪。

https://checkerframework.org/

我没试过,但看起来不错。

© www.soinside.com 2019 - 2024. All rights reserved.