assertEquals を使用して 2 つのリストが同じかどうかを確認しようとしましたが、これは問題なく機能しますが、リストを observableList に変更しようとすると、テストに失敗しました。
では、JUnit で 2 つの監視可能なリストを比較するにはどうすればよいでしょうか? リストの内容だけを比較したい。基本的に、これらの 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 を使用した場合は機能しません