java @Autowire不适合我的Spring cucumber 验收测试

x0fgdtte  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(117)

我刚刚开始使用Cucumber,无法使用它配置Spring(对于autowire,出现错误-〉org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用类型(MyClass)的合格Bean:应至少有1个Bean符合自动连接候选项的条件。依赖关系注解:{@org.springframework.beans.工厂.注解.自动连线(必需=真)})
我已经为项目的外部服务验收测试创建了单独的模块,以下是我的项目结构-x1c 0d1x
CucumberIntegrationTest.java -〉

@Cucumber
@CucumberOptions(features = "classpath:feature/" ,
                 glue = {"com.asite.iotgateway.cucumberspringboot.cucumberGlue" ,
                         "com.asite.iotgateway.cucumberspringboot.service"})
@SpringBootConfiguration
public class CucumberIntegrationTest {

}

SpringIntegrationTest.java -〉

@SpringBootTest
@CucumberContextConfiguration
public class SpringIntegrationTest {

}

如果我做得正确,请建议我在我的PreferenceStepDefinition.java文件中使用@Autowire。是否必须具有Application.java包含@SpringBootApplication的www.example.com文件,以便在验收测试中也使用Spring功能?

xdnvmnnf

xdnvmnnf1#

有几个问题。
1.
您的CucumberIntegrationTest混合了JUnit 4和JUnit 5注解,永远不会按照您所设想的方式工作。
您可以将cucumber-junit与JUnit Vintage和JUnit 5配合使用,也可以将cucumber-junit-platform-engine和JUnit 5套件与JUnit 5配合使用。
2.
SpringIntegrationTest是Cucumber用来告诉Spring如何构建应用程序上下文的类,如果您使用的是JUnit,那么这个类就是您要放置测试方法的类。
因此,如果您不能让它作为JUnit测试工作,那么它也不能用于Cucumber。
是的,一般来说,当使用@SpringBootTest时,你也需要@SpringBootApplication,但是你不必使用@SpringBootTest来构建一个应用上下文,这会减少很多工作。
3.
您提供的详细信息不足,无法重现您的问题。请查看How to create a Minimal, Reproducible Example

相关问题