【发布时间】:2019-12-19 14:17:48
【问题描述】:
正如标题所说,我想在 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 将其识别为胶水。我认为发生了这种情况,但后来我遇到了一个异常,说我不能扩展步骤实现类或钩子。我从 StepImplementation 类中删除了扩展,并将注释放在那里。仍然得到空指针异常。这是步骤 impl。现在:
@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() {
}
【问题讨论】:
标签: java rest spring-boot cucumber autowired