Cucumber Testng没有在Cumber钩子中执行代码
我不熟悉Selenium、Cucumber工具,正在学习使用Selenium、Cucumber、maven和TestNG构建BDD框架 我基本上有三个Java文件- 测试运行程序(src/Test/java) 步骤定义(src/test/java) TestBase(src/main/java) 我在TestBase类中定义了前后钩子 我的TestRunner类有一个为Extent report定义的插件,还有一个@AfterClass注释,它正在加载Extent-config.xml- 现在,当我运行功能文件时,它不会执行@AfterClass注释,因此会跳过生成范围报告。 但若我使用TestNG直接运行测试运行程序文件,它将跳过testBase类中定义的执行钩子- 试车代码-Cucumber Testng没有在Cumber钩子中执行代码,cucumber,Cucumber,我不熟悉Selenium、Cucumber工具,正在学习使用Selenium、Cucumber、maven和TestNG构建BDD框架 我基本上有三个Java文件- 测试运行程序(src/Test/java) 步骤定义(src/test/java) TestBase(src/main/java) 我在TestBase类中定义了前后钩子 我的TestRunner类有一个为Extent report定义的插件,还有一个@AfterClass注释,它正在加载Extent-config.xml- 现在,
@CucumberOptions(
features={"src/test/resources/Features/login"},
glue={"stepDefinition","src/main/java/Utils/TestBase.java"},
monochrome=true,
plugin={"pretty","html:target/Reports","com.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/report.html"}
)
public class Login_Runner extends AbstractTestNGCucumberTests{
@AfterClass
public static void writeExtentReport() {
System.out.println("I am in After Class");
Reporter.loadXMLConfig(new File("src/test/resources/extent-config.xml"));
}
有人能帮助解决这个问题吗?假设以下结构
src/test/java/stepdef/LoginSteps.java
src/test/java/runner/Login_Runner.java
src/test/resources/features/login.feature
pom.xml
LoginSteps.java
implements all steps for `login.feature`
package runner;
import org.testng.annotations.AfterClass;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(features = "src/test/resources/features", glue = "stepdef")
public class Login_Runner extends AbstractTestNGCucumberTests {
@AfterClass
public static void theAfterClassMethod() {
System.out.println("execute @AfterClass annotated method");
}
}
登录\u Runner.java
implements all steps for `login.feature`
package runner;
import org.testng.annotations.AfterClass;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(features = "src/test/resources/features", glue = "stepdef")
public class Login_Runner extends AbstractTestNGCucumberTests {
@AfterClass
public static void theAfterClassMethod() {
System.out.println("execute @AfterClass annotated method");
}
}
登录功能
Feature: test
Scenario: login
Given open browser
And start app
When enter details
Then login happens
pom.xml*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.suboptimal</groupId>
<artifactId>cuke-testng2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>3.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>3.0.2</version>
<type>jar</type>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
<surefire.version>2.22.0</surefire.version>
</properties>
</project>
产生输出
...
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running runner.Login_Runner
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@5ae63ade
execute @Before annotated method
execute @After annotated method
execute @AfterClass annotated method
1 Scenarios (1 passed)
4 Steps (4 passed)
0m0.023s
当您将类Login\u Runner
重命名为,例如loginrunertest
时,您可以使用mvn clean test
运行测试
也许运行程序类名是您最初的问题,而不是错过了执行
@afterest
方法。我相信运行该功能自然不会运行@Afterclass,因为它对测试运行程序没有任何作用。我不完全确定,但是:您可以尝试将testbase放在src/Test/java下。(有什么理由不这么做吗?)也许值得提供更多关于类和项目配置的详细信息。否则,很难猜测它为什么不起作用。至少根据您提供的唯一代码片段,应该执行用AfterClass
注释的方法。您可以添加扩展文件夹结构的屏幕截图吗?我不确定TestNG@AfterClass是否受支持。你能试试后钩子吗?您可以在这里找到关于After Hooks的更多信息是文件夹结构-src/main/java有两个类