Предполагается, что вы используете 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
.