java - JUnit 异常处理测试

标签 java unit-testing junit

我正在尝试测试下一个异常,但我不知道如何从 JUnit 抛出该异常,因为它是该方法的内部异常。

public boolean suscribirADato(int idDato) {
        InetAddress ip = null;
        boolean adecuadamenteSuscrito = false;

        try {
            ip = InetAddress.getByName(ipMulticast.get(idDato));
            grupoMulticast.set(idDato, ip);
            conexion.joinGroup(grupoMulticast.get(idDato));
            adecuadamenteSuscrito = true;
        } catch (IOException e) {
            LOGGER.info(e.getMessage());
        }
        return adecuadamenteSuscrito;
    }

最佳答案

其他人回答说你应该使用模拟框架。

但是,我对你的问题的理解如下:

I don't know how to throw the exception from JUnit, because is a internal exception of the method.

我的理解是,您正在尝试对方法内抛出并捕获的异常进行单元测试?

也许你的方法应该分为2个或更多方法,你可以分别测试?

从您的代码示例中,引发异常时执行的逻辑是

LOGGER.info(e.getMessage());

您还可以选择模拟 LOGGER 并在调用 info 时保留跟踪。然后,您可以断言 LOGGER.info 确实被调用(如果我理解正确的话)。

关于java - JUnit 异常处理测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528209/

相关文章:

Java - 仅在本地主机上工作的 UDP 多播

java - 用java从其他项目导入类总是出错

Angular 测试在初始化前无法访问服务

unit-testing - 在 Jasmine 测试中模拟 angular.element

javascript - 带有键事件处理程序的 Karma 单元测试 Angular Directive(指令)

java - Gradle 测试执行器因非零退出值 1 而失败(IntelliJ Idea 默认 Gradle[7.4.1]/JavaFX[17.0.1] 版本)

java - 如何为测试(junit)中的 block 设置超时?

java - JSP 页面不在使用 tomcat 的 Web 服务客户端中运行

java - jni 无法从 native 库中找到方法?

java - 如何确保一个字符串恰好有 n 次子串?