@paramètres dans Junit 4
Puis-je avoir plus d'une méthode avec @Paramètres dans la classe de test junit qui est en cours d'exécution avec Paramétrée de classe ?
@RunWith(value = Parameterized.class)
public class JunitTest6 {
private String str;
public JunitTest6(String region, String coverageKind,
String majorClass, Integer vehicleAge, BigDecimal factor) {
this.str = region;
}
@Parameters
public static Collection<Object[]> data1() {
Object[][] data = {{some data}}
return Arrays.asList(data);
}
@Test
public void pushTest() {
System.out.println("Parameterized str is : " + str);
str = null;
}
@Parameters
public static Collection<Object[]> data() {
Object[][] data = {{some other data}}
return Arrays.asList(data);
}
@Test
public void pullTest() {
System.out.println("Parameterized new str is : " + str);
str = null;
}
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le Les théories coureur (de recherche pour le mot théories à ce lien), pour transmettre des paramètres différents pour différentes méthodes.
Probablement le
data1
méthode, mais aucune garantie qu'il va utiliser, selon la JVM donne junit4 premier.Voici le code à partir de junit:
De sorte que le premier public, statique méthode annotée qu'il trouve sera utilisé, mais il peut les trouver dans n'importe quel ordre.
Pourquoi avez-vous uour test écrit de cette façon? Vous devez avoir un seul
@Parameters
-méthode annotée.Il n'est pas désigné d'avoir plus d'une méthode de données. Vous pouvez le voir dans skaffman réponse.
Pourquoi il n'est pas prévu de mettre en œuvre deux méthodes de données?
La réponse pourrait être: Couplage.
Est-il trop complexe pour diviser ce test en deux cas de tests? Vous serait en mesure d'introduire un petit héritage et de partager des méthodes communes. Avec deux cas de tests que vous pourriez fournir deux de données séparées par des méthodes et de tester vos trucs très bien.
J'espère que cela aide.
Vous pouvez créer des classes internes pour chaque ensemble de méthodes qui fonctionnent sur les mêmes paramètres. Par exemple:
@RunWith(Enclosed.class)
en face de l'extérieur de la classe.