首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JUnit java.lang.ExceptionInInitializerError黄瓜

JUnit java.lang.ExceptionInInitializerError黄瓜
EN

Stack Overflow用户
提问于 2021-04-11 22:26:52
回答 1查看 10.3K关注 0票数 4

我是UnitTesting和Cucumber的新手,今天我尝试实现Intelij和Eclipse教程中的一个简单示例,在尝试运行TestRunner.java时也遇到了同样的错误。

我的pom.xml:

代码语言:javascript
运行
复制
<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>

文件.feature

代码语言:javascript
运行
复制
   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

TestRunner.java

代码语言:javascript
运行
复制
    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 {

}

步骤

代码语言:javascript
运行
复制
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");
    }

}

我的档案结构:

而错误是:

1个场景(1个失败)4个步骤(1个失败,3个跳过)0m0,225 s

java.lang.ExceptionInInitializerError ...导致: java.lang.reflect.InaccessibleObjectException:无法使字段私有java.util.Comparator java.util.TreeMap.comparator可访问:模块java.base不对未命名的模块@378bf509“打开java.util”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-11 23:14:36

你使用的黄瓜版本已经非常过时了。

它仍然包含XStream库,其中包含这种马车的行为

从第3版起,XStream就从黄瓜中删除了。

Cucuc1.x和2.x使用一个名为XStream的库作为数据表和类型转换的核心构建块。 然而,结合使用XStream和Cucumber的文档很少,而且它不允许使用其他对象映射器(例如Jackson),这使得无法重用域对象。由于XStream与Java9不兼容,所以从长期来看也是个问题。

将依赖项更新为

代码语言:javascript
运行
复制
<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>

然后,您必须更新不同的导入,以包含这些导入,因为包已经更改

代码语言:javascript
运行
复制
// 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;

当这一切都完成后,我将在执行mvn test时得到预期的输出。

代码语言:javascript
运行
复制
-------------------------------------------------------
 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] ------------------------------------------------------------------------
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67050745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档