在黄瓜@AfterStep 不执行版本:5.7.0
In cucumber @AfterStep do not executing on version: 5.7.0
我正在使用 cucumber,testng 项目并将最新的 cucumber 集成到其中。
如果我在我的跑步者 class 中使用 TestNg 注释,它们将执行良好。但是,如果我在我的跑步者 class 中使用黄瓜注释,它将不会执行。
所以我很困惑为什么并寻找原因。
下面的代码块 'tearDown' 方法在我执行 'TestCases' class 后不执行。
功能文件执行到最后没有任何问题,但“@AfterStep”方法不执行。
我的依赖项有任何问题吗?
因为我使用 cucumber 5.7.0 和 testng '@AfterStep' 在
下导入
'import io.cucumber.java.AfterStep;'
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import io.cucumber.java.AfterStep;
public class TestCases extends AbstractTestNGCucumberTests {
@CucumberOptions(
plugin = {"pretty",
"html:target/cucumber-html-report",
"json:target/cucumber-report.json"},
features = {"src/test/resources/featureFiles/",},
glue = {"com.tests.testSteps"},
tags = {"@regressiontest"})
@AfterStep
public void tearDown() {
System.out.println("========= This line not executing ===========");
}
}
POM file configuration as below:
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>5.7.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>1.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>5.7.0</version>
</dependency>
</dependencies>
也许您应该将@AfterStep 放在步骤定义中。我用 cucumber-java
6.9.1 测试了它,它工作正常。但是,我将它与 junit
一起使用。我的 pom
看起来像这样
<junit.version>4.13.1</junit.version>
<cucumber.version>6.9.1</cucumber.version>
...
...
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
使您的运行器文件不同于步骤定义。这是我的跑步者文件
@RunWith(Cucumber.class)
@CucumberOptions
(
plugin = {
"pretty",
"json:target/AcceptanceTestResults.json"
},
features = "src/test/resources/com/test/RestAssured.feature",
glue = {"com.test.stepdefs"}
)
public class AcceptanceIT {
}
然后将你的步骤定义放在 diff 中 class
public class RestAssuredIT {
....
....
@AfterStep // this imports from io.cucumber:cucumber-java:6.9.1
public void afterEveryStep(){
//this prints after each step in feature file
System.out.println("***after every step****");
}
}
我正在使用 cucumber,testng 项目并将最新的 cucumber 集成到其中。 如果我在我的跑步者 class 中使用 TestNg 注释,它们将执行良好。但是,如果我在我的跑步者 class 中使用黄瓜注释,它将不会执行。 所以我很困惑为什么并寻找原因。
下面的代码块 'tearDown' 方法在我执行 'TestCases' class 后不执行。 功能文件执行到最后没有任何问题,但“@AfterStep”方法不执行。 我的依赖项有任何问题吗?
因为我使用 cucumber 5.7.0 和 testng '@AfterStep' 在
下导入
'import io.cucumber.java.AfterStep;'
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import io.cucumber.java.AfterStep;
public class TestCases extends AbstractTestNGCucumberTests {
@CucumberOptions(
plugin = {"pretty",
"html:target/cucumber-html-report",
"json:target/cucumber-report.json"},
features = {"src/test/resources/featureFiles/",},
glue = {"com.tests.testSteps"},
tags = {"@regressiontest"})
@AfterStep
public void tearDown() {
System.out.println("========= This line not executing ===========");
}
}
POM file configuration as below:
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>5.7.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>1.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>5.7.0</version>
</dependency>
</dependencies>
也许您应该将@AfterStep 放在步骤定义中。我用 cucumber-java
6.9.1 测试了它,它工作正常。但是,我将它与 junit
一起使用。我的 pom
看起来像这样
<junit.version>4.13.1</junit.version>
<cucumber.version>6.9.1</cucumber.version>
...
...
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
使您的运行器文件不同于步骤定义。这是我的跑步者文件
@RunWith(Cucumber.class)
@CucumberOptions
(
plugin = {
"pretty",
"json:target/AcceptanceTestResults.json"
},
features = "src/test/resources/com/test/RestAssured.feature",
glue = {"com.test.stepdefs"}
)
public class AcceptanceIT {
}
然后将你的步骤定义放在 diff 中 class
public class RestAssuredIT {
....
....
@AfterStep // this imports from io.cucumber:cucumber-java:6.9.1
public void afterEveryStep(){
//this prints after each step in feature file
System.out.println("***after every step****");
}
}