java - JUNIT - 断言异常

标签 java junit junit4

<分区>

我正在使用 JUNIT 4。我尝试使用以下代码断言异常,但没有成功。

@Rule
public ExpectedException thrown = ExpectedException.none();
thrown.expect(ApplicationException.class);

但是当我使用下面的注释时,它起作用并且测试通过了。

@Test(expected=ApplicationException.class)

如果我遗漏了什么,请告诉我。

import org.junit.Rule;
import org.junit.rules.ExpectedException;

public class Test
{

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

    @org.junit.Test
    public void throwsIllegalArgumentExceptionIfIconIsNull()
    {


        exception.expect(IllegalArgumentException.class);
        toTest();
    }

    private void toTest()
    {
        throw new IllegalArgumentException();
    }
}

最佳答案

以下代码是使用异常(exception)规则的最小示例。

public class Test
{

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

    @org.junit.Test
    public void throwsIllegalArgumentExceptionIfIconIsNull()
    {
        exception.expect(IllegalArgumentException.class);
        toTest();
    }

    private void toTest()
    {
        throw new IllegalArgumentException();
    }
}

另请参阅 (Wiki entry about rules)

关于java - JUNIT - 断言异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729443/

相关文章:

java - 循环运行 Junit 测试,如果两者之间的一个失败,则继续运行

java - 通过ant脚本运行junit时在控制台上获取输出

java - 给定约束的 Java 中最大大小的子集

java - 如何使用 jsch 和代理命令进行端口转发

java - ClassNotFoundException : edu. stanford.nlp.tagger.maxent.ExtractorNonAlphanumeric

java - 测试用例没有按预期运行?

java - 如何为 jdbc 模拟上下文数据源

java - 类似@TestedOn 的理论但可用于字符串?或者单独的参数化类?

java - 在单元测试中访问资源

Java管道,为什么我在从管道读取时被无限期地阻塞