您好,这里有一个针对车辆构造函数的测试。该测试用没有驾驶执照的驾驶员初始化车辆,并且应该抛出异常。
代码构造函数:
public Voertuig(String Merk, Datum datumEersteIngebruikname, int Aankoopprijs, int Zitplaatsen, Mens bestuurder, Mens ... ingezetenen) {
this.nummerplaat = div.getNummerplaat();
this.Zitplaatsen = Zitplaatsen;
try {
this.Merk = Merk;
this.datumEersteIngebruikname = datumEersteIngebruikname;
this.Aankoopprijs = Aankoopprijs;
if (!Arrays.asList(bestuurder.getRijbewijs()).contains(Rijbewijs.B) || !Arrays.asList(bestuurder.getRijbewijs()).contains(Rijbewijs.BE)) {
throw new MensException("Geen correct rijbewijs");
} else {
this.bestuurder = bestuurder;
Ingezetenen.add(bestuurder);
}
Mens[] a = ingezetenen;
if (a.length > Zitplaatsen - 1) {
throw new MensException("te veel ingezetenen");
} else {
for (int i = 0; i < a.length; i++) {
ingezetenenExclBestuurder.add(a[i]);
Ingezetenen.add(a[i]);
}
}
} catch (MensException e) {
System.out.println(e.getMessage());
}
}
代码测试:
@Test(expected = be.vdab.util.mens.MensException.class)
public void test_constructor_zonder_Rijbewijs() {
//VOERTUIG B,BE//bestuurder:---
Voertuig voertuig = new TestVoertuig("auto", datum, 18300, AANTAL_INZITTENDEN, INGEZETENE_A);
}
当我运行这个集中测试方法时,这就是结果。
------------- 标准输出 ---------------
正确的 rijbewijs
Testcase: Testcase: test_constructor_zonder_Rijbewijs(be.vdab.voertuigen.VoertuigTest): FAILED
Expected exception: be.vdab.util.mens.MensException
junit.framework.AssertionFailedError: Expected exception: be.vdab.util.mens.MensException
因此,根据输出,异常被捕获并显示,但测试失败。有人知道为什么吗?提前致谢。
编辑:我通过不包含 try-catch 块而只是抛出异常来修复它,从而导致必须在创建对象的每个测试方法中添加“抛出 MensException”。我通过调整我的自定义 MensException 解决了这个问题,我没有扩展 Exception,而是扩展了 RuntimeException,这样我就不必在每个测试方法中添加“抛出 MensException”。