我一直在尝试使用TestRunner运行我的特性文件,但它失败了。当我右键单击TestRunner -〉Run As JUnit时,什么都没有发生,它只显示Finished。Console选项卡没有消息,JUnit选项卡没有测试运行。它只显示“在X秒后完成”。
I attached my package structure for you to check.
我正在使用Gradle和Eclipse IDE
下面是我的TestRunner类:
package runners;
import org.junit.runner.RunWith;
import io.cucumber.junit.*;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/java/feature",
glue = {"stepDefinition"},
tags = "@Login",
)
public class TestRunner {
}
下面是我步骤定义代码:
package stepDefinition;
import org.openqa.selenium.WebDriver;
import cucumber.TestContext;
import io.cucumber.java.en.*;
import managers.FileReaderManager;
import dataProvider.ConfigFileReader;
public class CommonStep {
private WebDriver driver;
private TestContext testContext;
public CommonStep (ConfigFileReader configFile, TestContext testContext) {
this.testContext = testContext;
this.driver = testContext.getWebDriverManager().getDriver();
}
@Given("the user navigates to Login Page {string}")
public void TheUserIsInLoginPage(String url) throws Throwable {
driver.get(FileReaderManager.getInstance().getConfigReader().getApplicationUrl());
testContext.getPageObjectManager().getBasePage().waitForPageToLoad(30);;
Thread.sleep(5000);
}
}
我错过什么了吗?谢谢你的帮助!
我试着把我的特性文件放在src/test/resources文件夹下,并更改了我的TestRunner features =“src/test/resources/feature”,但仍然没有运气。我得到的输出与原始问题相同。
1条答案
按热度按时间moiiocjp1#
我认为您的问题出在您的测试运行器类使用的JUnit版本上。请尝试使用JUnit 4执行您的
TestRunner.java
。为此,请打开您的测试运行器类的Run Configurations上下文菜单,然后从下拉菜单中选择JUnit 4。您正在使用
@CucumberOptions
这一事实告诉我您正在使用JUnit 4 Cucumber配置。这就是为什么当您尝试将测试作为JUnit测试运行时会失败,但当您将其作为Cucumber Feature运行时则工作正常。基本上,您正在将JUnit排除在外。如果您安装了JUnit 5(Jupiter),则通常会默认使用此版本来运行测试。Cucumber与JUnit 4和5的配置实际上并不兼容。如果您想使用JUnit 5,我建议您按照这些instructions配置项目。我必须澄清,链接的示例将测试作为Maven测试而不是JUnit测试运行,但确实使用了JUnit 5平台。
这里简要介绍一下如何使用JUnit 5将项目转换为Cucumber。
您的runner、步骤定义和特性文件必须在一个公共包下。对于我的示例项目,我创建了
com.example
包。因此,您的结构应该如下所示:您的
TestRunner
类应按如下方式注解:并且,POM至少应包含以下内容
最后,确保您的测试运行器类使用JUnit 5而不是JUnit 4。我已经提供了如何在运行配置上下文菜单中更改此参数的说明。
1.将当前项目配置更改为使用JUnit 4运行,或者
1.按照我在最后一次编辑中指出的那样更改项目,以便它可以运行JUnit 5。