Как переписать управляемые данными наборы тестов JUnit 3 в Junit 4?

Я использую наборы тестов на основе данных с JUnit 3 на основе Rainsberger's Рецепты JUnit. Цель этих тестов - проверить, правильно ли реализована определенная функция, относящаяся к набору пар ввода-вывода.

Вот определение набора тестов:

public static Test suite() throws Exception {
    TestSuite suite = new TestSuite();
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.set(2009, 8, 05, 13, 23); // 2009. 09. 05. 13:23
    java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());
    suite.addTest(new DateFormatTestToString(date, JtDateFormat.FormatType.YYYY_MON_DD, "2009-SEP-05"));
    suite.addTest(new DateFormatTestToString(date, JtDateFormat.FormatType.DD_MON_YYYY, "05/SEP/2009"));
    return suite;
}   

и определение класса тестирования:

public class DateFormatTestToString extends TestCase {

    private java.sql.Date date;
    private JtDateFormat.FormatType dateFormat;
    private String expectedStringFormat;

    public DateFormatTestToString(java.sql.Date date, JtDateFormat.FormatType dateFormat, String expectedStringFormat) {
        super("testGetString");
        this.date = date;
        this.dateFormat = dateFormat;
        this.expectedStringFormat = expectedStringFormat;
    }

    public void testGetString() {
        String result = JtDateFormat.getString(date, dateFormat);
        assertTrue( expectedStringFormat.equalsIgnoreCase(result));
    }
}

Как можно протестировать несколько параметров ввода-вывода метода с помощью JUnit 4?

Этот вопрос и ответы объяснили мне различие между JUnit 3 и 4 в этом отношении. Этот вопрос и ответы описывают способ создания набора тестов для набора классов, но не для метода. с набором разных параметров.

Решение:

Основываясь на ответе drscroogemcduck, это точная страница, что помогло.


person rics    schedule 12.05.2010    source источник


Ответы (1)


действительно простой способ:

у вас всегда может быть метод:

checkGetString(date, dateFormat, expectedValue)

а затем просто метод

@Test
testGetString:

  checkGetString(date1, '...', '...');
  checkGetString(date2, '...', '...');

лучший способ:

http://junit.sourceforge.net/javadoc_40/org/junit/runners/Parameterized.html

или лучше теорий junit:

http://isagoksu.com/2009/development/agile-development/test-driven-development/using-junit-datapoints-and-theories/.

person benmmurphy    schedule 12.05.2010
comment
Каким действительно простым способом можно гарантировать, что тесты выполняются независимо, а установка выполняется между вызовами checkGetString? - person rics; 12.05.2010
comment
Пример параметризованных запахов для меня: повторяющееся определение параметров Фибоначчи? - person rics; 12.05.2010
comment
checkGetString имеет все свое состояние внутри метода, а не в классе, поэтому он независим. - person benmmurphy; 12.05.2010
comment
В этом случае да, но в целом это не обязательно. Например, я хотел бы протестировать некоторые функции, связанные с базой данных, и мне нужно новое соединение для каждого теста. - person rics; 12.05.2010