2012-07-06 6 views
2

У меня есть особая ситуация. В основном у меня есть единичный тест, аннотированный с помощью @Test, и внутри этого теста мне нужно выполнить тестовый класс JCM Cucumber.Пробег вручную Тесты с огурцами

Почему? Длинная история. Что-то связанное с загрузчиками классов и RoboGuice, это не очень важно, но оно накладывает ограничения на то, что я могу и чего не могу сделать.

Вот метод испытания:

@Test 
public void runCucumberFeature() throws Exception { 
    Cucumber cucumber = new Cucumber(MyCucumberTest.class); 
    cucumber.run(new RunNotifier()); 
} 

MyCucumberTest это класс я создал, и аннотированный как это:

//@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, strict=true) 
public class MyCucumberTest { 
    // Empty, as required by Cucumber JVM 
} 

Почему я закомментировал @RunWith аннотацию? Потому что, если я этого не сделаю, тестовый бегун Cucumber проверит тест и запустит его, чего я не хочу, потому что я запускаю тест вручную.

Проблема в том, что вышеуказанное не работает. Похоже, что Cucumber находит файлы функций, он проверяет, что MyCucumberTest содержит @Givens и т. Д., Он даже распечатывает тест, как будто он его запускает.

Но это не так. Никакой код не выполняется внутри методов @Given, @When и @Then. Я не уверен, почему это так, но я имею смутное представление о том, что тестовый бегун JCM Cucumber не хочет выполнять код, потому что класс не аннотируется с помощью @RunWith.

Может ли кто-нибудь помочь?

ответ

1

я не могу предоставить решение, которое вы ищете, но ....

... Вы рассмотрели мечение теста, который вы хотите запустить вручную (например, с @Manual)?

Затем вы можете раскомментировать аннотацию @RunWith и исключить ручной тест, добавив --tags [email protected] к вызову Cucumber-JVM.

В вашем руководстве JUnit вызова можно добавить --tags @Manual

+0

Я не знал, что был @Manual тег. Это может помочь. Спасибо за предложение, это пока что самое лучшее :-) – user1283068

+1

Теги определены пользователем - используйте теги, которые имеют смысл для вас. Вы можете применить несколько тегов к сценарию, что позволяет создавать тестовые пакеты для определенных целей (например, \ @Regression, \ @ Defect_54321 и т. Д.), –