到今天为止,我一直在研究单元测试,遇到了一个障碍。我有一个给定的方法,我想用unittest测试,这个方法可能有错误,也可能没有错误。方法如下:
@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;
}
查看测试中给定的时间跨度,我希望测试能够通过,但正如您所猜测的那样,它没有通过,并且返回了一个“预期:但是是”错误。并指向代码行,其中表示:
assertEquals( result3, expResult3);
我试图理解为什么与assertEquals的比较不起作用,看起来覆盖equals方法在这里不起作用。我也尝试覆盖hashCode()方法,但这似乎没有什么区别。
我看到了几个问题。首先,在你的equals方法中使用. equals(),而不是==来比较相等性。其次,现在不是会导致错误的东西,但是你需要在equals方法中输入检查,或者你可以得到一个CCE。我建议你让你的ID自动生成equals方法。仅供参考,这也应该创建一个你缺少的hashCode方法。
你的equals方法是错误的,你在其中使用了==。
试试这个:
if (this.bt.equals( other.bt) && this.et .equals( other.et)){
@M大提琴,我认为罪魁祸首将在这里“返回新的时间跨度(开始时间,结束时间);”
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);
}
我正试图为一个方法编写一个测试用例,该方法基于特定的逻辑抛出异常。然而,测试用例失败了,因为预期的异常和获得的异常是不同的。 我如何解决这个问题?
您好,我对Junit和Mockito的单元测试相当陌生。我认为我对这些原则有一个相当合理的理解,但我似乎找不到任何解释来解释我特别想在网上测试什么。 我想测试一个方法,它调用其他几个方法(void和non-void),该方法还实例化了方法体中的对象。不幸的是,我不能分享代码,因为它不是我的,但这里有一个通用格式: 目前我只关心测试method_1,我不能直接测试,因为它是一个私有方法,所以我必须通
我正在尝试创建我的第一个测试。我必须证明一个方法返回一个ContextLambda类型,我正在使用assertSame函数测试它,但是我的测试失败了,我不知道用什么assert来测试这个,用assertEquals也失败了。我的测试是这样的:
我有这两种方法,在使用Mock实现测试时遇到了困难。我该如何参加考试? 我有麻烦得到Jboss目录而不必启动System.get属性(jboss.server.temp.dir);
问题内容: 我只有一种方法。如何检查System.out.println()并将Scanner替换为使用JUnit自动输入值? PS,请提供一些解决方案… 问题答案: 理想情况下,提取尴尬的依赖关系,以便您可以在没有依赖关系的情况下进行测试。更改为简单: (考虑使用a 代替for 。) 然后,您实际上不需要进行单元测试-但您可以使用基于的进行测试,并基于的输出进行测试,从而提供所需的任何输入并检查
我正在创建两个单元测试来测试我的应用程序逻辑。在下面,我根据顺序是否为真创建了两个最终变量。有没有一种方法可以不必为每种订单类型创建最终变量,从而使其干燥?