我有一个类似这样的测试用例
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
答案 0 :(得分:3)
如果您不希望其他课程能够编辑Square
的中间位置,请返回一个新的点:
public Point getMidPoint() {
return new Point(newMidPoint);
}
然后你的测试将变为绿色。