为作业进行一些junit测试。只是想知道在同一个测试中是否可以有多个assertEquals()语句?当它通过时,这是否意味着如果一个assertEquals语句失败将会失败?或者它只接受一个assertEquals()语句?
car3 = new Car("gargle", 45, false);
car4 = new Car("cheese", 45, true);
moto3 = new MotorCycle("ass", 45);
assertEquals(true, carPark.spacesAvailable(car3));
assertEquals(true, carPark.spacesAvailable(car4));
assertEquals(true, carPark.spacesAvailable(moto3));
只会使用第一个assertEquals或将全部使用
答案 0 :(得分:6)
所有断言将按顺序运行。第一个失败的断言导致测试失败,之后没有进一步的断言。
AssertJ有一种机制允许运行所有断言,无论它们是成功还是失败:
final SoftAssertions soft = new SoftAssertions();
soft.assertThat(...);
soft.assertThat(...);
soft.assertThat(...);
soft.assertAll();
这将报告在.assertAll()
上失败的所有断言。 Link to javadoc
编辑从2.0.0(仅限Java 7+)开始,还有AutoCloseableSoftAssertions
,这意味着您最后不需要.assertAll()
:
try (
final AutoCloseableSoftAssertions soft
= new AutoCloseableSoftAssertions();
) {
soft.assertThat(thePope).isSaint(); // or whatever
} // <--- .assertAll() here!
答案 1 :(得分:0)
是的,可以在一个unittest中有多个assertEquals。如果其中一个assertEquals返回false,则单元测试失败。
答案 2 :(得分:0)
是的,你可以在j / x / n单元测试中有许多不同的断言语句。 但是,正如您所发现的,如果任何断言失败,整个testMethod将因此失败。
正如它所发生的那样,在testMethod内部,测试运行器将开始执行assert语句。一旦失败,testMethod将返回,而不执行任何其他断言。
答案 3 :(得分:0)
亲爱的,我想给你一个建议,如果你想使用多个断言。如果使用&#34; if else&#34;会更好。多个AssertTrue的条件。