【发布时间】:2018-07-05 06:45:08
【问题描述】:
我是 Selenium、Cucumber 工具的新手,正在学习使用 Selenium、cucumber、maven 和 TestNG 构建 BDD 框架。
我基本上有三个 Java 文件- 测试运行器(src/test/java) 步骤定义(src/test/java) 测试库(src/main/java)
我在 TestBase 类中定义了之前和之后的钩子 我的 Test-Runner 类有一个为 Extent-report 定义的插件,它还有一个 @AfterClass 注释,它正在加载 extent-config.xml-
现在在运行功能文件时,它不会执行 @AfterClass 注释,因此会跳过生成范围报告。 但是如果我使用 TestNG 直接运行 Test-runner 文件,它会跳过执行 testBase Class 中定义的 Hooks-
Test-Runner的代码-
@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"));
}
谁能帮忙解决这个问题???
【问题讨论】:
-
我相信运行该功能自然不会运行@Afterclass,因为它对 Test-Runner 没有任何作用。我不完全确定,但是:您可能会尝试将 Test-Base 放在 src/test/java 下。 (有什么理由不这样做吗?)
-
也许值得提供更多关于你的类和项目配置的细节。否则很难猜出它为什么不起作用。至少根据您提供的唯一sn-p,应该执行带有
AfterClass注释的方法。 -
可以添加展开后文件夹结构的截图吗?
-
我不确定是否支持 TestNG @AfterClass。你可以试试 After Hook 吗?您可以在 After Hooks here 上找到更多信息
-
这里是文件夹结构 - src/main/java 有两个类
标签: cucumber