我有一个类似以下的枚举:
public enum MyEnum {
FIRST(new FirstOperations()),
SECOND(new SecondOperations())
...
我的问题是,如果我有2个不同的单元测试类并且都声明MyEnum my = MyEnum.FIRST;
,则FirstOperations
类将仅通过运行的第一个单元测试进行实例化。第二个测试用例将重新开始。
为什么JUnit会在堆中保留这些枚举?一旦第一个测试用例完成,它们不应该被垃圾收集吗?
答案 0 :(得分:0)
枚举是Singeltons的完美示例(例如,见here)。这就是为什么它们只被实例化一次 - 除非你在每次测试中分叉JVM。
不要依赖垃圾收集器。你永远不知道它何时运行。