所以我有一个具有以下代码的类:
class A {
int static value = 0;
public void executeOperationforFooValue(int number) {
B b = new B();
B.executeFooValueChange(number);
}
public void setFoo(int value) {
if (A.value == 0) {
A.value = value;
} else {
A.value = A.value + value;
}
}
}
class B {
A a = new A();
public void executeFooValueChange(int number) {
setFoo(number);
}
public void setFoo(int number) {
a.setFoo(number)
}
}
其中 SetFoo 将从外部类中获取一个值,并在 A 的当前实例的生命周期内添加/减去它们。我最初尝试使用它(而不是让它静态),但是当 B.executeFooValueChange() 完成执行时并返回到 A 类,value 的值将重置为 0。
我遇到的问题是在为 A 类开发 JUnit 测试时。我的理解是,当我实例化 A 类的新实例时,类范围内的所有变量都将设置为其默认值。但是,当我运行以下代码时:
public final void testA() {
A a = new A();
A.executeOperationforFooValue(1);
assertEquals(1,a.setFoo();
}
public final void testB() {
A a = new A();
A.executeOperationforFooValue(2);
assertEquals(2,a.setFoo();
}
第二个测试将失败(顺序无关紧要),因为 a.setFoo() 的值是三,而不是定义的值。有没有办法解决这个问题,或者我的 A 类和 B 类如何相互关联的架构是不健全的?
我将 B 类中设置的值返回给 A 类的原因是 A 类需要该值进行进一步处理,而 B 类将根据提交的数量进行多个操作和值返回。我没有让B类扩展A类,因为在设计它们的关系时,我觉得它们之间没有任何关系。在这我可能是不正确的。