为什么这会导致JUnit测试失败。我有一个名为Complex for Complex Numbers的类,构造函数接受2个真实和虚构的参数,看起来像这样
Public Complex(double real, double imaginary) {
this.real=real;
this.imagine=imagine;
}
然后我有一个添加方法,称为像这样的添加
Public Complex add (Complex other) {
double temporaryReal = real + other.real;
double temporaryImagine = Imagine + other.Imagine;
return new Complex(temporaryReal, tempImagine);
}
我设置了一个测试类来测试该方法。看起来像这样
public void testAdd() {
Complex other = new Complex(15, 30);
Complex newComplex = new Complex(15, 30);
assertTrue( myComplex.add(other) == newComplex );
}
如果我输入正确的参数,JUnit测试应该通过。我哪里错了?
答案 0 :(得分:2)
myComplex.add(other)
返回一个对象引用。 newComplex
也是一个对象引用,它引用另一个对象。所以当你说myComplex.add(other) == newComplex
时,你试图检查这两个引用是否相同,而不是。
如果要比较两个对象,则需要覆盖基类equals()
中的hashCode()
和Object
方法。请参阅this question以了解如何执行此操作。