JUnit测试添加复数

时间:2018-04-02 02:03:14

标签: java junit complex-numbers

我正在尝试通过我的j单元测试我的代码将复杂的数字加在一起,但我一直在失败。我不确定为什么会这样。

添加代码

// Adds one Complex Number with another
    public ComplexNumber add(ComplexNumber a) {
        MyDouble realNum = this.real.add(a.real);
        MyDouble imagNum = this.imag.add(a.imag);
        return new ComplexNumber(realNum, imagNum);

    } 

.add来自另一个类MyDouble,它在其中添加了两个双打。

JUnit代码

@Test
    public void testAdd() {
        MyDouble a = new MyDouble(1.5), b = new MyDouble(2.0);
        MyDouble c = new MyDouble(2.5), d = new MyDouble(3.0);

        MyDouble realNum = a.add(c);
        MyDouble imagNum = b.add(d);

        ComplexNumber x = new ComplexNumber(a,b);
        ComplexNumber y = new ComplexNumber(c,d);

        assertTrue(new ComplexNumber(realNum, imagNum) == y.add(x) );
    }

1 个答案:

答案 0 :(得分:2)

此测试未通过,因为比较是通过引用而不是通过值进行的:

assertTrue(new ComplexNumber(realNum, imagNum) == y.add(x));

new ComplexNumber(args)创建一个新的对象实例,而y.add(x)返回另一个对象实例。断言失败,因为它们的引用不相同,即使这些对象中包含的值可能相等。

在Java中,与" =="进行比较当一个人开始编码时经常会感到困惑。

要解决此测试用例的问题,您应该尝试

assertEquals(new ComplexNumber(realNum, imagNum), y.add(x));

如果ComplexNumber实施equals方法(如有必要,请检查实施它的资源,它们是军团)。

相关问题