Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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测试中使用ExpectedException验证生产代码中的断言错误_Java_Junit_Assert - Fatal编程技术网

Java 如何在JUnit测试中使用ExpectedException验证生产代码中的断言错误

Java 如何在JUnit测试中使用ExpectedException验证生产代码中的断言错误,java,junit,assert,Java,Junit,Assert,在生产代码中的方法myMethod中的某处有一个断言,如: public void myMethod(List list1, List list2) { assert list1.size() == list2.size() } 还有一个单元测试 @Rule public ExpectedException ex = ExpectedException.none(); @Test public void test() throws Exception { ex.expect(java.l

在生产代码中的方法
myMethod
中的某处有一个断言,如:

public void myMethod(List list1, List list2) {
 assert list1.size() == list2.size()
}
还有一个单元测试

@Rule
public ExpectedException ex = ExpectedException.none();

@Test
public void test() throws Exception {
 ex.expect(java.lang.AssertionError.class);
 myMethod(Arrays.asList(1, 2), Arrays.asList(1, 2, 3));
}

我希望单元测试能够成功运行,但是我得到了
AssertionError
。为什么会这样?

假设您使用的是4.11,那么

默认情况下,
ExpectedException
规则不处理
AssertionErrors
假设违反异常
,因为 朱尼特。如果你想处理这些异常,你必须调用
handleasertionerrors()
handleasumptionViolatedExceptions()

假设断言是通过
-ea
选项启用的,只需将调用添加到
handleAssertionErrors()



不赞成。自JUnit4.12以来,默认情况下会处理断言错误。就像在JUnit中一样,假设您使用的是4.11,那么

默认情况下,
ExpectedException
规则不处理
AssertionErrors
假设违反异常
,因为 朱尼特。如果你想处理这些异常,你必须调用
handleasertionerrors()
handleasumptionViolatedExceptions()

假设断言是通过
-ea
选项启用的,只需将调用添加到
handleAssertionErrors()



不赞成。自JUnit4.12以来,默认情况下会处理断言错误。就像在JUnit@SotiriosDelimanolis中一样,我知道关键字的作用。我只是想知道如何在单元测试中使用它,以及ExpectedException的规则。@SotiriosDelimanolis我知道关键字的作用。我只是想知道如何在单元测试中使用它以及ExpectedException规则。
@Test
public void test() throws Exception {
    ex.handleAssertionErrors();
    ex.expect(java.lang.AssertionError.class);
    myMethod(Arrays.asList(1, 2), Arrays.asList(1, 2, 3));
}