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

如何在Defects4J中为指定故障测试用例自定义输入?

给Defects4J故障测试用例添加自定义输入的步骤

1. 定位目标测试类

Defects4J项目的测试代码默认放在src/test/java目录下,根据你执行defects4j test后得到的失败测试函数名,找到对应的测试类文件(路径对应包结构)。比如失败测试是testCalculate,就找包含这个方法的CalculateTest.java。

2. 修改测试方法添加自定义输入

直接打开找到的测试类文件,通过两种方式加入自定义输入:

方式1:在原有测试方法中追加输入

比如原测试代码:

@Test
public void testCalculate() {
    int result = calculator.calculate(10);
    assertEquals(20, result);
}

修改为:

@Test
public void testCalculate() {
    // 原有测试输入
    int result1 = calculator.calculate(10);
    assertEquals(20, result1);
    
    // 自定义输入1:边界值
    int result2 = calculator.calculate(0);
    assertEquals(0, result2);
    
    // 自定义输入2:负数
    int result3 = calculator.calculate(-5);
    assertEquals(-10, result3);
}

方式2:新增独立测试方法

如果不想改动原有测试,新增一个@Test方法专门测试自定义输入:

@Test
public void testCalculateCustomInputs() {
    // 批量自定义输入
    int[] testInputs = {1, 50, -100, Integer.MAX_VALUE};
    for (int input : testInputs) {
        assertEquals(input * 2, calculator.calculate(input));
    }
}

3. 编译修改后的测试代码

运行以下命令编译测试类(比全量编译更高效):

defects4j compile -t

4. 运行特定测试验证结果

用defects4j test -t命令指定要运行的测试类和方法,避免运行所有测试浪费时间:

# 运行单个测试方法
defects4j test -t com.example.CalculateTest::testCalculate
# 运行新增的自定义测试方法
defects4j test -t com.example.CalculateTest::testCalculateCustomInputs

观察输出结果,就能判断该故障是仅在特定输入下失败,还是所有输入都会失败。

5. 恢复原测试类(可选)

如果之后需要还原修改的测试文件,用git命令即可:

git checkout src/test/java/com/example/CalculateTest.java

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:36:26