2010-05-12 9 views
1

J'utilise des suites de tests pilotées par données exécutant JUnit 3 sur la base de Rainsberger's JUnit Recipes. Le but de ces tests est de vérifier si une certaine fonction est correctement implémentée en relation avec un ensemble de paires entrée-sortie.Comment réécrire les suites de tests pilotées par les données de JUnit 3 dans Junit 4?

Voici la définition de la suite de tests:

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; 
} 

et la définition de la classe de test:

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)); 
    } 
} 

Comment est-il possible de tester plusieurs paramètres d'entrée-sortie d'une méthode utilisant JUnit 4?

This question et les réponses m'ont expliqué la distinction entre JUnit 3 et 4 à cet égard. This question et les réponses décrivent la manière de créer une suite de tests pour un ensemble de classes mais pas pour une méthode avec un ensemble de paramètres différents.

Solution:

Sur la base de la réponse de ce drscroogemcduck est the exact page ce qui a aidé.

Répondre

1

la manière très simple:

vous pouvez toujours avoir une méthode:

checkGetString(date, dateFormat, expectedValue) 

et alors juste une méthode

@Test 
testGetString: 

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

la plus belle façon:

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

ou de meilleures théories JUnit:

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

+0

Avec la « façon très simple » comment voulez-vous assurer que les tests sont en cours d'exécution indépendamment et la configuration est effectuée entre les appels checkGetString? – rics

+0

L'exemple des odeurs paramétrées pour moi: dupliquer la définition des paramètres de Fibonacci? – rics

+0

checkGetString a tout son état dans la méthode et aucun dans la classe, donc il est indépendant. – benmmurphy

Questions connexes