在测试用例/不同类

时间:2015-09-07 14:13:54

标签: java constructor

我有一个类似这样的测试用例

TestSquare.java

public void testEncaps() {
    Shifting shift = new Shifting(150,260);
    Square s = new Square(new Point(101,201),130,140,shift);    
    Point p = s.getMidPoint();
    p.x = 215;
    p.y = 315;
    assertEquals(new Point(101,201),s.getMidPoint());
}

因此,在最后一行,s.getMidPoint()不等于Point(101, 201),而是被215,315覆盖。这是我的构造函数代码和get方法。

Square.java

public Square(Point newP, int width, int height, Shift newS) {
    this.newMidPoint = newP;
    this.newWidth = width;
    this.newHeight = height;
    this.newShift= newS;
}
public Point getMidPoint() {
    return newMidPoint;
}

因此,s.getMidPoint()不应该替换为Point对象。我做错了什么?

这两个代码属于不同的类别。所以Square.java

中没有主要方法

1 个答案:

答案 0 :(得分:3)

如果您不希望其他课程能够编辑Square的中间位置,请返回一个新的点:

public Point getMidPoint() {
    return new Point(newMidPoint);
}

然后你的测试将变为绿色。