You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为抛出异常的if代码块编写JUnit测试用例

单元测试实现方法

你给出的是Java风格的字符串空校验逻辑,当入参str为null时会抛出信息为exception occurred的异常,我们可以用JUnit 5单元测试框架编写测试用例,覆盖两个核心测试场景:

  • 入参为非null值时,逻辑正常执行不抛出异常
  • 入参为null值时,抛出符合类型和信息要求的异常

我们假设这段校验逻辑封装在TestTarget类的checkString方法中,原业务代码如下:

public class TestTarget {
    public void checkString(String str) throws Exception {
        if(str == null){
            throw new Exception("exception occurred");
        }
        // 其余业务逻辑
    }
}

对应的单元测试代码示例:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;

public class StringCheckTest {
    private final TestTarget testTarget = new TestTarget();

    // 测试非空入参场景
    @Test
    public void testCheckStringWithNonNullInput() {
        String testInput = "valid string";
        // 校验方法执行无异常
        assertDoesNotThrow(() -> testTarget.checkString(testInput));
    }

    // 测试空入参场景
    @Test
    public void testCheckStringWithNullInput() {
        String testInput = null;
        // 校验抛出的异常类型和信息符合预期
        Exception exception = assertThrows(Exception.class, () -> testTarget.checkString(testInput));
        assert exception.getMessage().equals("exception occurred");
    }
}

如果你使用其他编程语言,实现思路完全一致:分别构造空和非空两类入参,分别校验执行结果是否符合预期即可。

内容的提问来源于stack exchange,提问作者Bala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:57:05