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

Използвам тестови пакети, управлявани от данни, работещи с JUnit 3, базирани на Rainsberger 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