Question

Y at-il une manière propre à exécuter paramétrées JUnit 4 tests sans changer le coureur, à savoir sans utiliser @RunWith(Parameterized.class)?

J'ai des tests unitaires qui nécessitent un coureur spécial déjà et je ne peux pas remplacer celui-ci avec Parameterized. Peut-être il y a une sorte de « Enchaînement runner » pour que je puisse les deux coureurs en même temps? (Juste une supposition sauvage ...)

Était-ce utile?

La solution

org.junit.runners.Parameterized est créé par org.junit.internal.builders.AnnotatedBuilder par refléter le mécanisme. Peut-être que vous pourriez étendre Parameterized comme votre propre Runner. @RunWith ( MyParameterized .class)

Autres conseils

J'ai sorti un cadre avec deux coureurs qui sont en mesure de faire respecter le paramétrage de la classe de test tout en vous permettant d'enchaîner un coureur 3ème partie arbitraire pour le test d'exécution réelle.

Le cadre est CallbackParams - (http://callbackparams.org) - et ce sont les coureurs:

  • CallbackParamsRunner
  • BddRunner

En utilisant l'annotation cadre ...

  • @WrappedRunner

... vous pouvez spécifier un coureur 3ème partie arbitraire de cette manière:

@RunWith(CallbackParamsRunner.class) // or @RunWith(BddRunner.class)
@WrappedRunner(YourSpecialRunner.class)
public class YourTest {
...

Tests paramétrés avec CallbackParams diffèrent considérablement de l'approche traditionnelle de test paramétrisation, cependant. Les raisons sont expliquées dans cette tutoriel article avec BddRunner expliqué à la fin de l'article tutoriel .

Pour vos premiers CallbackParams test que vous auriez probablement préférer BddRunner, car il nécessite moins de choses-plaque de la chaudière, mais quand vous commencez à réutiliser des valeurs de paramètres entre les différents test-classes vous êtes probablement mieux avec CallbackParamsRunner, qui demande de type contrôle plus fort.

En outre - avec BddRunner vous ne devez avoir aucune @ méthodes de contrôle. Au lieu de cela, vous devez utiliser les annotations cadre @Given, @When et @Then. Cette exigence parfois avec ceux du clash du coureur tiers mais il fonctionne habituellement très bien.

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top