我有这个烦人的JUnit错误。预期:其中11是烷基;但是:< 0>

时间:2018-04-06 23:06:50

标签: junit

//A method for find the smallest integer from the array, assuming
//that the array is not empty

public class SmallestIntegerFinder {
    public static int findSmallestInt(int[] arrayOfIntegers) {
        int smallest=0;
        for(int i=0;i<arrayOfIntegers.length;i++){ 

            if(smallest>arrayOfIntegers[i]) {
                smallest=arrayOfIntegers[i];
            }

        }
        return smallest; 
    }
}


//Junit test
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class SmallestIntegerFinderTest {

    @Test
    public void example1(){
        int expected = 11;
        int actual = SmallestIntegerFinder.findSmallestInt(new int[]{78,56,232,12,11,43});
        assertEquals(expected, actual);
    }

}

我有这个恼人的错误。预期:其中11是烷基;但是:&lt; 0&gt; java.lang.AssertionError:expected:&lt; 11&gt;但是:&lt; 0&gt;我能做什么?我该如何解决这个错误?当我不使用JUnit时,代码运行良好。一旦我包含JUnit测试,我就会收到错误。请指教

1 个答案:

答案 0 :(得分:2)

问题在于,初始化>>> ts1.head(10) temp rh snow wind gust \ 2018-01-26 21:00:00 -10.120000 63.930000 207.100000 4.018000 9.806000 2018-01-26 22:00:00 -9.750000 58.540000 207.000000 3.856000 11.149000 2018-01-26 23:00:00 -9.710000 60.920000 206.900000 6.505000 13.759000 2018-01-27 00:00:00 -10.110000 57.450000 206.700000 6.602000 12.488000 2018-01-27 01:00:00 -10.041459 58.191892 206.854054 6.574757 12.575784 2018-01-27 02:00:00 -9.972919 58.933784 207.008108 6.547514 12.663568 2018-01-27 03:00:00 -9.904378 59.675676 207.162162 6.520270 12.751351 2018-01-27 04:00:00 -9.835838 60.417568 207.316216 6.493027 12.839135 2018-01-27 05:00:00 -9.767297 61.159459 207.470270 6.465784 12.926919 2018-01-27 06:00:00 -9.698757 61.901351 207.624324 6.438541 13.014703 wind_dir 2018-01-26 21:00:00 173.900000 2018-01-26 22:00:00 158.500000 2018-01-26 23:00:00 159.100000 2018-01-27 00:00:00 167.700000 2018-01-27 01:00:00 166.791892 2018-01-27 02:00:00 165.883784 2018-01-27 03:00:00 164.975676 2018-01-27 04:00:00 164.067568 2018-01-27 05:00:00 163.159459 2018-01-27 06:00:00 162.251351 时,将其设置为0,小于所有测试数据,因此结果为0。

解决这个问题的一种天真的方法是首先将smallest设置为一个非常大的常量,但是如果最终使用更大的数据集,这仍然可能无效。 (从技术上讲,你可以将它设置为最大整数值,但这非常难看)

更好的解决方案是将smallest的值初始化为数据集的第一个整数smallest。通过这样做,arrayOfIntegers[0]保证至少与数据集中的至少一个项目一样大。