gpt4 book ai didi

java - 使用Junit输出对象的测试方法

转载 作者:行者123 更新时间:2023-11-29 04:38:57 25 4
gpt4 key购买 nike

截至今天,我一直在研究单元测试并遇到了障碍。我有一个给定的方法,我想用单元测试对其进行测试,该方法可能有也可能没有错误。方法是这个:

@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);
}

该方法应该输出一个新的时间跨度,该时间跨度由两个时间跨度的重叠时间构成。我已经为此方法编写了一个单元测试,如下所示:

@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);

}

为了相互比较对象,我重写了 TimeSpan 类中的 equals 方法,如下所示:

@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;
}

查看测试中给定的时间跨度,我预计测试会通过,但您可以猜到它没有通过,并且它返回“expected: but was”错误。并指向代码行,上面写着:

assertEquals( result3, expResult3);

我试图理解为什么与 assertEquals 的这种比较不起作用,看起来重写 equals 方法在这里不起作用。我也尝试过覆盖 hashCode() 方法,但这似乎没有什么不同。

最佳答案

@M Cello,我认为罪魁祸首会在这里“return new TimeSpan(begintime, endtime);”

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;
}
//i think the culprit is here, plz print the begintime, endtime and check what are the values its passing other than this everything is working fine
return new TimeSpan(begintime, endtime);
}

关于java - 使用Junit输出对象的测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com