作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就像标题所说,我想在 Cucumber 中测试一个场景,其中我使用服务类的方法向数据库添加一个新的 DTO。问题是我无法使用@Autowire,并且不知道如何启用它。我已经尝试了类似问题的几种解决方案(Like this one) ,但我不知道我哪里错了。作为引用,我在 Intellij 中执行此操作,这就是我的结构:
这是我的 cucumber 开始课:
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/unit/resources/features")
public class RunCucumberUnitTest {
}
这是所有步骤都将继承的 BaseStep 类:
@ContextConfiguration(classes = {BasicLoginTestApplication.class},
initializers = ConfigFileApplicationContextInitializer.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class BaseStep {
}
在我的步骤实现中,我尝试这样做:
public class UserServiceTestStepImplementation extends BaseStep{
@Autowired
UserService userService;
但我仍然收到 userService 的空指针异常。我真的很想知道我能做什么。
编辑:我尝试向 BaseStep 类添加一个虚拟方法,以使 Cucumber 将其识别为胶水。我认为发生了这种情况,但后来我收到一个异常,说我无法扩展步骤实现类或 Hook 。我从 StepImplementation 类中删除了扩展,并将注释放在那里。仍然出现空指针异常。这是步骤实现。现在:
@ContextConfiguration(classes = {BasicLoginTestApplication.class},
initializers = ConfigFileApplicationContextInitializer.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class UserServiceTestStepImplementation /*extends BaseStep*/{
@Autowired
UserService userService;
@Before
public void springContext() {
}
最佳答案
您可能需要将此代码添加到您的 BaseStep 类中
@Before
public void setup_cucumber_spring_context(){
// Dummy method so cucumber will recognize this class as glue
// and use its context configuration.
}
关于java - 如何在 Cucumber 步骤实现中 @Autowire REST 服务类(Spring boot)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59411551/
我是一名优秀的程序员,十分优秀!