因此,基本上,我正在创建一种检查数组“应用程序”中应用程序编号的方法,该方法接受一个参数来检查该特定应用程序编号并将其与列表中的应用程序编号进行比较。
代码:
public boolean hasApplicationNumber(int number) {
if (number <= 0 ) {
throw new IllegalArgumentException("bad number");
}
for (ApplicationData current : applications) {
if (number == current.getApplicationNumber() ) {
return true;
}
}
return false;
}
用于检查应用程序编号的JUnit测试:
public void shouldHaveApplicationNumber1() {
University westGeorgia = new University("West Georgia");
ApplicationData student1 = new ApplicationData(1, 4.0, 100);
westGeorgia.addApplication(student1);
assertEquals(true, westGeorgia.hasApplicationNumber(1));
}
我的代码未能通过此JUnit测试,并返回“ false”而不是“ true”。
但是,我可以将“ hasApplicationNumber”方法中的返回值更改为true(在该方法的最底部),此测试将通过,但是我通过了另一个测试(不允许列表超过10) )将在应该为“假”的情况下返回“真”并导致失败(我未包含该测试,因为它与我已经提供的测试非常相似-仅将“ 1”更改为“ 10”,“ true”更改为“ false”。
我开始这样想:我的测试被Java编译器忽略了,或者我的for-each循环正在正确运行并返回“ true”,但是由于最后我仍然挥之不去,所以可能不管发生什么,都将其声明为假。
我可能只是对此进行了思考,但是我不确定在我编写的方法中还有什么其他方法可以修改此for-each循环。非常感谢您为解决此问题提供的帮助!