#java #cucumber #junit5
#java #огурец #junit5
Вопрос:
Недавно я перенес cucumber info.cukes в io.cucumber и Junit 4 в Junit 5, потому что выполнение не работало с моей версией Java.
моя базовая страница
public class BasePage {
public static RemoteWebDriver driver;
@BeforeAll
public static void initWebDriver() {
System.out.println("i will init Driver");
initDriver()
}
}
мой Пом
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.1.0</version>
<scope>test</scope>
</dependency>
Комментарии:
1. И как выглядит ваш тест?
2. Я думаю, вам следует использовать аннотацию @RunWith …. над именем класса. Что-то вроде: @RunWith(JUnitPlatform.class ) базовая страница общедоступного класса …..
3. Мой тест: «‘ импортировать io.cucumber.junit. Cucumber; импортировать io.cucumber.junit. CucumberOptions; импортировать org.junit.runner. Выполнить с помощью; @RunWith(Cucumber.class ) @CucumberOptions(функции = {«src /test/ресурсы / функции»} ,клей = «» ,теги = «@Test» )»‘
4. я попытался добавить аннотацию: @RunWith(JUnitPlatform.class ) базовая страница общедоступного класса, но не может разрешить JUnitPlatform.class
Ответ №1:
Если вы вообще можете запустить какой-либо сценарий Cucumber, вы, вероятно, используете неправильный импорт для @BeforeAll
аннотации. Правильными являются io.cucumber.java.BeforeAll
и io.cucumber.java.AfterAll
.
https://github.com/cucumber/cucumber-jvm/tree/main/java#hooks
package io.cucumber.example;
import io.cucumber.java.AfterAll;
import io.cucumber.java.BeforeAll;
public class StepDefinitions {
@BeforeAll
public static void beforeAll() {
// Runs before all scenarios
}
@AfterAll
public static void afterAll() {
// Runs after all scenarios
}
}
Ответ №2:
Если вы вообще не можете запускать какие-либо тесты, и вы хотите использовать только JUnit 5, и вы не хотите использовать JUnit Vintage с Cucumber JUnit, тогда вы можете использовать cucumber-junit-platform-engine
.
Для этого вам нужны эти зависимости как минимум:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.8.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-bom</artifactId>
<version>7.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit-platform-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Примечание: вы можете использовать dependencyManagement
только для объявления версии для Cucumber и JUnit один раз.
Затем вы можете настроить класс runner, используя аннотацию JUnit 5 Suite.
package io.cucumber.skeleton;
import org.junit.platform.suite.api.ConfigurationParameter;
import org.junit.platform.suite.api.IncludeEngines;
import org.junit.platform.suite.api.SelectClasspathResource;
import org.junit.platform.suite.api.Suite;
import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME;
@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("io/cucumber/skeleton")
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty")
public class RunCucumberTest {
}
Минимальный рабочий пример см.: https://github.com/cucumber/cucumber-java-skeleton