|
|
1
2
您能否在TestCase和您的单个测试类之间引入一个子类来进行清理?那么子类只负责调用super。只有那些有自己的撕裂的人。 |
|
|
2
1
我完全同意其他人的观点,即监视内存使用情况并不是跟踪这个系统的可行方法。gc()的行为不会像您预期的那样,或者不够精确,无法实现您的目标。 你需要一个工具,让你检查参考图,并显示分配调用堆栈。 我用过Borland和 JProfiler 来自ej technologies,两者都取得了成功(谷歌的快速搜索显示,它现在可能已经死了。) 还有使用 JVMTI 为了更好地监控这个特定问题。 编辑 :Wierd,但当我回顾这个答案时,我接到了Embarcadero的电话,他显然已经购买了OptimizeIt,进行了一些更新,现在正在以这个名字进行营销 J Optimizer . |
|
|
3
0
只是想一想:如果有两个空测试紧跟在一起运行,那么第二个测试在teardown()之后不应该使用不同的内存。如果是这样的话,您(可能)的setup()/teardown()系统中有漏洞。 |
|
|
4
0
我认为这不是一个好办法。
如果您的根本问题是单元测试最终使用全局数据(单例),而没有正确清理它们,那么您应该解决根本问题:这些单元测试。找到所有没有使用的测试应该不会太难
|
|
|
5
0
为了更彻底地解决这个问题,我建议您使用一个单例初始值设定项来记住它初始化的内容,并使用一个撕裂方法来撕裂它初始化的所有内容,而不是检测它。这样的话,测试只能通过这个类进行初始化,并且只需要在teardown中做一件事。 我还认为Carl Manaster的建议很好,但是如果您使用的是JUnit4,那么您可以有一个在超类中运行的teardown方法,而不必记住调用super。除非您使用JUnit3 GUI,否则JUnit4应该是一个替代品。唯一的一件事是利用它的新特性,你必须迁移整个测试,你不能让两者都生活在同一个类中。因此,与这些单例交互的测试必须一次迁移一个完整的测试类。 |
|
|
6
0
你可以用 Eclipse Memory Analyzer 自动分析每次测试后进行的堆转储,或者在所有测试后可能更好。MAT可以相当自动地发现内存泄漏。 |
|
|
wavesinaroom · 断言结构向量长度 1 年前 |
|
|
Tim Kirkwood · 比较空数据帧 1 年前 |
|
Kamran Khan · 使用单元测试ASP。NET核心 2 年前 |
|
|
paymer · 为什么我的代码没有删除我的单元测试生成的zip文件? 2 年前 |
|
|
Ricky Mo · 角度测试如何模拟导入的const 2 年前 |
|
|
Natty · Visual Studio中缺少“代码覆盖率结果” 2 年前 |