junit:forkMode=“once”对测试正确性的影响
2022-09-02 01:51:17
我想减少我们的构建(使用ant)运行测试所需的时间。目前我正在使用默认的forkMode
,它在每个测试类()上分叉一个新的vm。perTest
我正在考虑切换到,但我不确定这是否会以某种方式耦合测试,并可能在运行测试后给我假阳性和/或假阴性结果。forkMode="once"
问题:
每个测试用例是否会获得一个新的 ClassLoader,以便不再访问/查看以前运行中的所有静态引用?
是否还有其他事情会导致测试方法的测试依赖性/耦合性,这可能会改变行为(除了我不使用的本机库加载)
- 垃圾回收/最终确定,它们在每次测试后运行吗?(我不依赖它们,但我只是想得到一个完整的画面)
更新
根据目前的答案,在使用 forkMode 时,junit 似乎总是在每个 vm/fork 的所有测试用例之间共享一个类加载器。(所以 forkMode=“once” 确实意味着所有测试都有一个类加载器)
这有许多优点(更快的测试,并且可能导致测试因静态耦合而失败),但也有一些缺点(静态耦合仅在使用共享类装入器时才有效 - >误报)