【发布时间】:2013-10-10 17:42:02
【问题描述】:
我正在尝试对引用另一个类的静态数据的类进行单元测试。我不能“不”使用这个静态类,但显然运行多个测试已经成为问题。所以我的问题是这个。在 junit 测试中有没有办法重新初始化静态类?这样一个测试就不会受到前一个测试的影响?
换句话说,这样做的某种方式:
Foo.setBar("Hello");
// Somehow reinitialize Foo
String bar = Foo.getBar(); // Gets default value of bar rather than "Hello"
不幸的是,我无法更改 Foo,所以我无法使用它。
编辑 看来我的例子有点太简单了。在实际代码中,“Bar”由系统属性设置并设置为内部静态变量。所以一旦它开始运行,我就无法改变它。
【问题讨论】:
-
不清楚你在问什么。您是在寻找在特定时间(何时?)运行代码的 JUnit 功能,还是在询问是否可以在初始化后修改外部
Foo类? -
当然,您可以修改 Foo 使其可变,但显然禁止这样做。唯一的其他选择是使用私有类加载器和反射来允许重新加载类。但是
Foo.getBar()的调用必须重新进行。 -
Foo是否有任何设置器可以通过努力将其恢复到初始化状态?