модульное тестирование с junit4 - PullRequest
2 голосов
/ 14 июня 2010

как мне создать набор тестов в junit4 ??

Ответы [ 2 ]

6 голосов
/ 14 июня 2010

Вот один пример:

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

}
1 голос
/ 15 июня 2010

Модульное тестирование действительно легко и лучше всего объяснить на простом примере.

У нас будет следующий класс, вычисляющий среднее значение массива:

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), не равно нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...