Lno*_*oob 4 java cucumber cucumber-jvm cucumber-junit cucumber-java
我是 UnitTesting 和 Cucumber 的新手,今天我尝试在 Intelij 和 Eclipse 中实现教程中的一个简单示例,当我尝试运行 TestRunner.java 时,我遇到了相同的错误。
我的 pom.xml:
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
文件.feature
Feature: User Login
User should be able to login using valid credentials
Scenario: Testing login with valid credentials
Given I am on login page
When I enter username as "jsmith" and password as "demo1234"
And I submit login page
Then I redirect to user home page
Run Code Online (Sandbox Code Playgroud)
测试运行器.java
package com.unit.runner;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:login/LoginTest.feature",
glue = "com.unit.runner.steps")
public class TestRunner {
}
Run Code Online (Sandbox Code Playgroud)
脚步
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class StepDefinationSteps {
@Given("^I am on login page$")
public void i_am_on_login_page() throws Throwable {
System.out.println("open login page url");
}
@When("^I enter username as \"([^\"]*)\" and password as \"([^\"]*)\"$")
public void i_enter_username_as_and_password_as(String username, String password) throws Throwable {
System.out.println("open login page url");
}
@When("^I submit login page$")
public void i_submit_login_page() throws Throwable {
System.out.println("open login page url");
}
@Then("^I redirect to user home page$")
public void i_redirect_to_user_home_page() throws Throwable {
System.out.println("open login page url");
}
}
Run Code Online (Sandbox Code Playgroud)
我的文件结构:
和错误:
1 个场景(1 个失败) 4 个步骤(1 个失败,3 个跳过) 0m0,225s
java.lang.ExceptionInInitializerError ...引起的:java.lang.reflect.InaccessibleObjectException:无法使字段私有最终java.util.Comparator java.util.TreeMap.comparator可访问:模块java.base不“打开java.util” “到未命名模块@378bf509
您使用的 Cucumber 版本非常过时。
它仍然包含具有此错误行为的XStream 库。
自版本 3 起,XStream 已从 Cucumber 中删除
Cucumber 1.x 和 2.x 使用名为 XStream 的库作为数据表和类型转换的中心构建块。
然而,XStream 与 Cucumber 结合使用的记录很少,并且它不允许使用其他对象映射器(例如 Jackson),这使得无法重用域对象。由于 XStream 与 Java 9 不兼容,从长远来看这也是一个问题。
将您的依赖项更新为
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>6.10.2</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>6.10.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后,您必须更新不同的导入以包含这些导入,因为包已更改
// In StepDefinitionSteps.java
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
// In TestRunner.java
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
Run Code Online (Sandbox Code Playgroud)
当这一切完成后,我在执行时会得到预期的打印结果mvn test
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.unit.runner.TestRunner
open login page url
open login page url
open login page url
open login page url
?????????????????????????????????????????????????????????????????????????????????????
? Share your Cucumber Report with your team at https://reports.cucumber.io ?
? Activate publishing with one of the following: ?
? ?
? src/test/resources/cucumber.properties: cucumber.publish.enabled=true ?
? src/test/resources/junit-platform.properties: cucumber.publish.enabled=true ?
? Environment variable: CUCUMBER_PUBLISH_ENABLED=true ?
? JUnit: @CucumberOptions(publish = true) ?
? ?
? More information at https://reports.cucumber.io/docs/cucumber-jvm ?
? ?
? Disable this message with one of the following: ?
? ?
? src/test/resources/cucumber.properties: cucumber.publish.quiet=true ?
? src/test/resources/junit-platform.properties: cucumber.publish.quiet=true ?
?????????????????????????????????????????????????????????????????????????????????????
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.562 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.807 s
[INFO] Finished at: 2021-04-12T01:11:09+02:00
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15215 次 |
| 最近记录: |