Запуск теста JUnit4 - из Java-программы - PullRequest
1 голос
/ 19 апреля 2010

Мне было интересно, как запустить какой-нибудь тест JUnit4 внутри Java-программы. В основном - в зависимости от некоторых условий во время выполнения мне нужно решить, какой тестовый запуск использовать. Используя Junit3, я мог бы переопределить метод runTest из класса TestCase - но в тестах JUnit4 не расширять класс TestCase, поэтому мне нечего переопределять ... Может быть, мне нужен какой-нибудь метод для реализации ... или что-то еще ...

Ответы [ 2 ]

0 голосов
/ 12 апреля 2012

Проблема, с которой я столкнулся, заключается в том, что мне нужно запускать метод (который не может быть статичным) перед каждым тестовым примером

Если этот нестатический метод связан с предварительной подготовкой тестового примера, этого можно добиться, аннотируя метод с использованием @Before в вашем тестовом классе. Посмотрите на документы Junit4 для поведения @Before.

В противном случае, чтобы просто запустить тестовый класс Junit, вы можете использовать следующий код:

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

Надеюсь, это поможет.

0 голосов
/ 19 апреля 2010

Вот пример кода для вас:

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