我正在使用JUnit进行单元测试。假设我想测试类B
(类B
的方法)。假设我们有另一个类A
,它是主类(包含main
方法)并且有一些protected static
个字段。
现在,类B
使用类A
的一些静态字段。因此,如果我正在测试类B
,那么类A
的这些静态字段就不存在了。
如何在不执行程序的情况下测试类B
(执行类A
)?
编辑:我必须澄清一下。假设我们在src / package1 / classA.java中有以下类A:
public classA {
protected static int field1;
protected static int field2;
public static void main(String[] args) {
// initialize static fields.
}
}
现在假设我们在同一个包src / package1 / classB.java中有另一个B类。
public ClassB {
public ClassB() {
// Do some stuff.
}
public void someMethod() {
// Access of static fields from A.
classA.field1....
classA.field2....
}
}
现在我在test / package1 / classBTest.java中有一个JUnit测试用于测试类B.但问题是field1和field2没有初始化。
如何在JUnit中手动初始化两个字段classA.field1和classA.field2而不执行A类的主方法?
答案 0 :(得分:1)
你可以调用classA的主要方法.i.e。 ClassA.main(somestrArray),它应该进行初始化。
但是如果您不想这样做,那么您可以在与原始类相同的包中创建junit测试,并且您将能够访问受保护的变量。 ClassA.field1 = 1;等等,它不必在同一个项目中,只是包名应该相同。
如果那不行,那么你需要重构你的ClassA以允许这种情况.i.e。有一个执行init等的方法。