Je me demandais comment exécuter un test JUnit4 dans un programme Java. Fondamentalement - en fonction de certaines conditions pendant l'exécution, j'ai besoin de décider quel coureur d'essai à utiliser. En utilisant Junit3 je pourrais remplacer la méthode runTest de la classe TestCase - mais dans les tests JUnit4 ne pas étendre la classe TestCase donc je n'ai rien à redéfinir ... Y a-t-il une méthode à implémenter ... ou sth else ...Exécution d'un test JUnit4 - à partir d'un programme Java
1
A
Répondre
0
Voici quelques exemples de code pour vous:
public void checkTests() throws org.junit.runners.model.InitializationError {
checkTestClass((Class<?>) MyTestClss.class);
}
private void checkTestClass(Class<?> theClass) throws InitializationError {
final RunNotifier notifier = new RunNotifier();
notifier.addListener(new RunListener() {
@Override
public void testFailure(Failure failure) throws Exception {
Assert.fail(failure.getMessage());
}
});
final Runner runner = new BlockJUnit4ClassRunner(theClass);
runner.run(notifier);
}
0
Le problème que j'ai est que je dois exécuter une méthode (qui ne peut pas être statique) avant chaque test
Si ce non méthode statique est quelque chose lié à la pré-conditionnement du cas de test, vous pouvez réaliser cela en annotant une méthode en utilisant @Before
dans votre classe de test. Jetez un oeil à la documentation Junit4 pour le comportement de @Before
.
Sinon, pour déclencher simplement une classe de test JUnit, vous pouvez utiliser le code suivant:
Runner r =
try {
r = new BlockJUnit4ClassRunner(Class.forName(testClass));
} catch (ClassNotFoundException | InitializationError e) { // FIX if necessary: JDK 7 syntax
// handle
}
JUnitCore c = new JUnitCore();
c.run(Request.runner(r));
espoir qui aide.
Cela semble prometteur. Le problème que j'ai est que je dois exécuter une méthode (qui ne peut pas être statique) avant chaque cas de test ... Par exemple en utilisant JUnitCore runner. Quel est le meilleur moyen d'y parvenir? – markovuksanovic