今日、私は単体テストの研究を進めており、障害を見つけました。私はunittestでテストしたいメソッドを持っていますが、メソッドにエラーがあるかもしれません。メソッドは、このいずれかになります。Junitを使用してオブジェクトを出力するテスト方法
@Override
public ITimeSpan intersectionWith(ITimeSpan timeSpan) {
ITime begintime, endtime;
if (bt.compareTo(timeSpan.getBeginTime()) > 0) {
begintime = bt;
} else {
begintime = timeSpan.getBeginTime();
}
if (et.compareTo(timeSpan.getEndTime()) < 0) {
endtime = et;
} else {
endtime = timeSpan.getEndTime();
}
// aangepast van >= naar <=
if (begintime.compareTo(endtime) <= 0) {
return null;
}
return new TimeSpan(begintime, endtime);
}
この方法が出力に2つのタイムスパンの時間をオーバーラップから構成される新しいタイムスパンを想定しています。
@Override
public boolean equals(Object obj){
if (obj == null){
return false;
}
final TimeSpan other = (TimeSpan) obj;
if (this.bt == other.bt && this.et == other.et){
return true;
}
return false;
}
:私はこのようなのTimeSpanクラスのequalsメソッドをオーバーライドしてきたお互いにオブジェクトを比較するために
@Test
public void testIntersectionWith() {
System.out.println("intersectionWith");
ITimeSpan timeSpan = new TimeSpan(new Time (2000,4,4,4,4), new Time(2000,5,5,5,5));
TimeSpan instance3 = new TimeSpan(new Time (2000,4,4,4,4), new Time(2000,8,8,8,8));
ITimeSpan expResult3 = new TimeSpan(new Time (2000,4,4,4,4), new Time(2000,5,5,5,5));
ITimeSpan result3 = instance3.intersectionWith(timeSpan);
assertEquals(result3, expResult3);
}
:私はこのようになります。この方法のためのユニットテストを書いています
テストではタイムスパンを見ていますが、テストをパスすることを期待していましたが、推測できる通り、それはしませんでしたし、 "expected:but was"エラーを返します。そして、言うのコードの行にポイント:私はのassertEqualsと、この比較は動作しない理由を理解しようとしてい
assertEquals(result3, expResult3);
は、それがここで働いていないequalsメソッドをオーバーライドするように見えます。私もhashCode()メソッドをオーバーライドしようとしましたが、それは違いがないようです。
BTW:JUnitアサーションの第1パラメータは期待値であり、第2パラメータは実際の値です。アサーションエラーを正しく理解するだけで、それが助けになるかもしれません。 – Heri
私はすでにそれを変えました、私は今日の難しい道を学びました。私はすぐにそれを忘れそうにないです。 –