使用junit4进行单元测试

时间:2010-06-14 17:56:17

标签: java unit-testing junit

如何在junit4中创建测试套件?

2 个答案:

答案 0 :(得分:6)

以下是一个例子:

@RunWith(Suite.class)
@Suite.SuiteClasses(
        {
            TestClass1.class,
            TestClass2.class,
        })
public class DummyTestSuite
{

}

答案 1 :(得分:1)

单元测试非常简单,最好用一个简单的例子来解释。

我们将使用以下类计算数组的平均值:

package com.stackoverflow.junit;

public class Average {
    public static double avg(double[] avg) {
        double sum = 0;

        // sum all values
        for(double num : avg) {
            sum += num;
        }


        return sum / avg.length;
    }
}

我们的JUnit测试现在将测试此方法的一些基本操作:

package com.stackoverflow.junit;

import junit.framework.TestCase;

public class AverageTest extends TestCase {
    public void testOneValueAverage() {
        // we expect the average of one element (with value 5) to be 5, the 0.01 is a delta because of imprecise floating-point operations
        double avg1 = Average.avg(new double[]{5});
        assertEquals(5, avg1, 0.01);

        double avg2 = Average.avg(new double[]{3});
        assertEquals(3, avg2, 0.01);        
    }

    public void testTwoValueAverage() {
        double avg1 = Average.avg(new double[]{5, 3});
        assertEquals(4, avg1, 0.01);

        double avg2 = Average.avg(new double[]{7, 2});
        assertEquals(4.5, avg2, 0.01);      
    }

    public void testZeroValueAverage() {
        double avg = Average.avg(new double[]{});
        assertEquals(0, avg, 0.01);
    }
}

前两个测试用例将显示我们实现的方法正确,但最后一个测试用例将失败。 但为什么? 数组的长度为零,我们潜水为零。浮点数除以零不是数字(NaN),不是零。