Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在同一个junit测试中可以有多个assertEquals(答案、结果)吗?_Java_Testing_Junit - Fatal编程技术网

Java 在同一个junit测试中可以有多个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

为作业做一些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));

是否只使用第一批资产或全部使用

将按顺序运行所有资产。第一次断言失败会导致测试失败,之后不会运行进一步的断言

具有允许运行所有断言的机制,无论断言成功与否:

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