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

JUnit断言错误排查:预期<11>实际<0>,求修复最小整数查找方法

排查JUnit预期值<11>但实际值<0>的问题

我一眼就看出问题出在哪了——你的findSmallestInt方法初始化smallest的方式完全错了!

问题根源

你把smallest初始化为0,这会直接导致两种错误场景:

  • 如果数组里的所有元素都大于0(比如你测试用例里的[11, ...]),0会一直比数组里的元素小,根本不会进入if语句更新值,所以方法最后返回的还是初始的0,这就是你看到预期<11>但实际<0>的核心原因。
  • 如果数组里包含负数,偶尔能得到正确结果也只是巧合,逻辑本身是不严谨的。

修复方案

正确的做法是把smallest初始化为数组的第一个元素,这样就能从数组实际存在的数值开始比较,不会引入外部默认值的干扰:

public class SmallestIntegerFinder {
    public static int findSmallestInt(int[] arrayOfIntegers) {
        // 初始化 smallest 为数组第一个元素(符合题目数组非空的前提)
        int smallest = arrayOfIntegers[0];
        for(int i = 0; i < arrayOfIntegers.length; i++){
            if(smallest > arrayOfIntegers[i]) {
                smallest = arrayOfIntegers[i];
            }
        }
        return smallest;
    }
}

要是想让代码更简洁,也可以用增强for循环:

public static int findSmallestInt(int[] arrayOfIntegers) {
    int smallest = arrayOfIntegers[0];
    for(int num : arrayOfIntegers) {
        if(num < smallest) {
            smallest = num;
        }
    }
    return smallest;
}

验证测试

补全你的JUnit测试用例后,运行就能得到正确结果了:

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class SmallestIntegerFinderTest {
    @Test
    public void example1(){
        // 测试用例:数组最小值为11的场景
        int[] testArray = {11, 15, 20};
        assertEquals(11, SmallestIntegerFinder.findSmallestInt(testArray));
        
        // 再测一个有更小值的场景验证逻辑
        int[] testArray2 = {5, 3, 9, 1};
        assertEquals(1, SmallestIntegerFinder.findSmallestInt(testArray2));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:15