微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 BeforeStep 黄瓜步骤定义中使用 Autowired

如何解决如何在 BeforeStep 黄瓜步骤定义中使用 Autowired

当我在步骤定义的 NullPointerException 黄瓜方法中使用 @Autowired 时,我得到 @BeforeStep。我在这里做错了什么?

请在下面找到我的代码

RunTest.java

import io.cucumber.junit.platform.engine.Cucumber;

@Cucumber
public class RunTest {
}

CucumberSpringConfig.java

import io.cucumber.spring.CucumberContextConfiguration;
import org.springframework.boot.test.context.SpringBoottest;


@CucumberContextConfiguration
@SpringBoottest(classes = DemoApplication.class)
public class CucumberSpringConfig {
}

MyStepdefs.java

import io.cucumber.java.BeforeStep;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
    
    public class MyStepdefs {
            
        //@Autowired Environment environment;
        
        Environment environment;
        
        MyStepdefs(Environment environment) {
            this.environment = environment;
        }
            
    @BeforeStep
    public static void beforeStep() {
    System.out.println("beforeStep method");
    String path = environment.getProperty("spring.security.oauth2.token-uri");
    System.out.println("path: " +path);
    }
    }

pom.xml

<!-- cucumber plugins -->
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-java</artifactId>
                <version>6.6.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>6.6.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-spring</artifactId>
                <version>6.6.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>datatable</artifactId>
                <version>3.4.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-junit-platform-engine</artifactId>
                <version>6.6.1</version>
                <scope>test</scope>
            </dependency>

例外:

步骤失败 java.lang.NullPointerException 在 com.demo.test.step.MyStepdefs.beforeStep(MyStepdefs.java:33)

解决方法

注解 @BeforeStep 步骤在静态方法上。这不适用于 @Autowired,因为静态方法独立于对象实例化,并且在实例化期间使用 @Autowired 进行 Spring 依赖注入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?