Как я могу поставить много данных, подождать, а затем запустить тесты в Cucumber? - PullRequest
0 голосов
/ 17 сентября 2018

У нас есть сообщения, поступающие из активов, и эти сообщения должны пройти процесс продолжительностью до 1 минуты, прежде чем данные попадут туда, где их можно будет проверить.У нас 1200 тестов, поэтому вы можете себе представить, сколько времени это займет.

В настоящее время мы используем JUnit 4 и используем метод "@BeforeClass" в средстве выполнения, чтобы найти все методы с аннотацией "@Stager" и выполнитьих.Затем мы ждем, затем мы запускаем тесты.Прекрасно работает (пока).

Мы бы хотели использовать огурец, однако он нам нужен:

  1. Сценические данные.
  2. Подождите 1 или 2минут
  3. Запустите тесты.

Есть ли способ сначала запустить ВСЕ "данные" методы, сделать паузу на 1 минуту, а затем запустить тесты?

Мы экспериментировали с параллельными потоками в Surefire, но, похоже, глючит, и у нас 1200 тестов.Честно говоря, для этого слишком много всего происходит.Нам не нужен параллельный запуск.Постановочные данные выполняются быстро, а тесты - быстро.Это пауза между для каждого теста, который является ограничителем показа.

Мы бы рассмотрели расширение огурца.Может быть:

@RunWith(CucumberStage.class)

Есть ли что-нибудь, что делает это?Любой совет?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Предполагается, что вы используете maven для запуска тестов.

Если вы планируете использовать джунит бегуна огурца, вы можете продолжить использовать существующую логику для настройки данных в BeforeClass бегуна.Проще, если у вас есть один бегун, иначе вам нужно будет настроить порядок выполнения в плагине.Что касается пропуска заданных методов, вы можете добавить свойство к surefire or failsafe plugin и использовать его в данном методе.

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.0</version>
        <configuration>                 
            <systemProperties>
                <property>
                    <name>skipproperty</name>
                    <value>myvaluetest</value>
                </property>
            </systemProperties>
        </configuration>
</plugin>

В данном методе вы можете использовать это свойство как флаг, чтобы пропустить шаг.Хотя это немного хакерство, поскольку его нужно скопировать во все методы настройки.Но таким образом вы все еще можете сохранить логику внутри данного метода.А также, если вы удалите свойство в POM, cucumber выполнит настройку обычным способом.

if(System.getProperty("skipproperty")!=null)
    return;

Но если вы также хотите попробовать TestNg, вы можете использовать maven exec plugin для запуска кода установки,Это сделает его независимым от среды тестирования.Настройка остается такой же, как описано выше, только плагин exec добавлен в POM.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
        <execution>
            <id>my-execution</id>
            <phase>process-test-classes</phase>
               <goals>
                    <goal>java</goal>
                </goals>
        </execution>
    </executions>
    <configuration>
            <mainClass>runner.ExecuteSetup</mainClass>
            <classpathScope>test</classpathScope>
    </configuration>
</plugin>

ExecuteSetup main() метод будет содержать существующую логику вызова кода установки.Убедитесь, что вы добавили classpathscope, иначе вы получите странный classnotfoundexception.

0 голосов
/ 17 сентября 2018

Я не думаю, что вы можете запустить только все шаги в Cucumber, а затем выполнить остальные шаги. Огурец выполнит все шаги один за другим.

...