0
我試着檢查兩個列表是否使用assertEquals相同,這工作得很好,但試圖將列表更改爲observableList時,測試失敗。比較Junit中的兩個observableLode
那麼如何比較JUnit中的兩個可觀察列表?我只想比較列表的內容。基本上,這些observableLists包含Point對象,並且在Point類中我有hashCodeBuilder和equalsBuilder方法。列表比較需要hashCode()
和equals()
方法,但我不確定ObservableList是否需要它們。
public class TestClass {
private MyClass myclass;
ObservableList<Point> TestPoints = FXCollections.observableArrayList();
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
myclass = new MyClass();
TestPoints.add(new Point(300.0,200.0));
TestPoints.add(new Point(600.0,500.0));
TestPoints.add(new Point(100.0,100.0));
TestPoints.add(new Point(200.0,200.0));
TestPoints.add(new Point(100.0,500.0));
TestPoints.add(new Point(600.0,100.0));
}
@Test
public void testClass() {
ObservableList<Point> expectedResult = FXCollections.observableArrayList();
expectedResult.add(new Point(100.0,100.0));
expectedResult.add(new Point(100.0,500.0));
expectedResult.add(new Point(600.0,500.0));
expectedResult.add(new Point(600.0,100.0));
ObservableList<Point> actualResult = FXCollections.observableArrayList();
actualResult = myclass.giftWrapping(TestPoints);
assertEquals(expectedResult, actualResult);
}
這點類
public class Point {
private final DoubleProperty x;
private final DoubleProperty y;
public Point() {
this(0, 0);
}
public Point(double x, double y) {
this.x = new SimpleDoubleProperty(x);
this.y = new SimpleDoubleProperty(y);
}
@Override
public int hashCode() {
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
hashCodeBuilder.append(x);
hashCodeBuilder.append(y);
return hashCodeBuilder.toHashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Point)) {
return false;
}
Point other = (Point) obj;
EqualsBuilder equalsBuilder = new EqualsBuilder();
equalsBuilder.append(x, other.x);
equalsBuilder.append(y, other.y);
return equalsBuilder.isEquals();
}
如果我用一個列表,但如果我用了一個observableList
您有興趣僅比較列表的內容或你也想比較更改觀察列表的綁定設置? – jewelsea 2015-02-23 18:21:05
如果您只想比較列表的當前內容,那麼'assertEquals'應該可以正常工作。除非你有一個'ObservableList'的實現沒有正確地覆蓋'equals'。你的'ObservableList'從哪裏來? – 2015-02-23 18:28:11
我想僅比較列表的內容。基本上,這些observableLists包含Point對象,而在Point類中我有hashCodeBuilder和equalsBuilder方法。 hashCode和equals(需要0個方法才能進行列表比較,但我不確定它們是否需要ObservableList – Sammson 2015-02-23 18:56:42