Java 在同一个junit测试中可以有多个assertEquals(答案、结果)吗?
为作业做一些junit测试。只是想知道在同一个测试中是否可能有多个assertEquals()语句?当它通过时,是否意味着如果一个assertEquals语句失败,它将失败?还是只需要一条assertEquals()语句Java 在同一个junit测试中可以有多个assertEquals(答案、结果)吗?,java,testing,junit,Java,Testing,Junit,为作业做一些junit测试。只是想知道在同一个测试中是否可能有多个assertEquals()语句?当它通过时,是否意味着如果一个assertEquals语句失败,它将失败?还是只需要一条assertEquals()语句 car3 = new Car("gargle", 45, false); car4 = new Car("cheese", 45, true); moto3 = new MotorCycle("ass", 45); assertEquals(t
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));
是否只使用第一批资产或全部使用将按顺序运行所有资产。第一次断言失败会导致测试失败,之后不会运行进一步的断言 具有允许运行所有断言的机制,无论断言成功与否:
final SoftAssertions soft = new SoftAssertions();
soft.assertThat(...);
soft.assertThat(...);
soft.assertThat(...);
soft.assertAll();
这将报告在.assertAll()上失败的所有断言
EDIT从2.0.0(仅限Java 7+版)开始,还有AutoCloseableSoftAssertions
,这意味着您不需要在结尾处使用.assertAll()
:
try (
final AutoCloseableSoftAssertions soft
= new AutoCloseableSoftAssertions();
) {
soft.assertThat(thePope).isSaint(); // or whatever
} // <--- .assertAll() here!
试试看(
最终自动关闭软断言
=新的AutoCloseableSoftAssertions();
) {
soft.assertThat(thePope.isSaint();//或其他
}是的,在一个单元测试中可以有多个assertEquals。如果其中一个assertEquals返回false,单元测试将失败。是的,在j/x/n单元测试中可以有许多不同的assert语句。
但是,正如您所发现的,如果任何断言失败,那么整个testMethod都将失败
此时,在testMethod内部,测试运行程序将开始执行assert语句。一旦失败,testMethod将返回,不执行任何附加断言。嗨,亲爱的,如果你想使用多个断言,我想给你一个建议。如果对多个AssertTrue使用“if-else”条件会更好。为什么不试试看呢?设置它,使第一个断言为真,第二个断言为假,然后看看会发生什么。+1如果您可以添加到AssertJ
api的链接,那就更好了如果您不想使用外部库AssertJ,并且正在使用Junit 4.7或更高版本,您可能需要查看ErrorCollector