![](/img/trans.png)
[英]No qualifying bean of type 'org.springframework.security.config.annotation.ObjectPostProcessor<?>' available when I use ContextHierarchy
[英]No qualifying bean, but I added @Component annotation
无法调用在“pcz.StepDefs.LoginPageStepDefs.userClicksRegisterOnMainPage()”中定义的步骤 [用户单击主页上的注册]。 步骤定义似乎存在问题。 转换后的参数类型为 ()
原因:io.cucumber.core.backend.CucumberBackendException:创建名称为“pcz.StepDefs.LoginPageStepDefs”的bean时出错:通过字段“loginPage”表示的依赖关系不满足; 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“pcz.Page.LoginPage”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。 依赖注解:{@org.springframework.beans.factory .annotation.Autowired(required=true)}
项目结构:
public class LoginPageStepDefs {
@Autowired
LoginPage loginPage;
@When("User clicks Register on main page")
public void userClicksRegisterOnMainPage() {
loginPage.test();
}
}
import org.springframework.stereotype.Component;
@Component
public class LoginPage {
public void test(){
}
}
和弹簧配置:
@CucumberContextConfiguration
@ContextConfiguration(classes = SpringBootCucumberApplication.class, loader = AnnotationConfigContextLoader.class)
@SpringBootTest()
public class CucumberSpringConfiguration {
}
@SpringBootApplication()
public class SpringBootCucumberApplication {
public static void main(String[] args) {
}
}
您的SpringBootCucumberApplication
和CucumberSpringConfiguration
都不会扫描您的LoginPage
组件,因为它位于完全不同的包中。 默认组件扫描仅查看当前和任何降序包,但pcz.Page
不在pcz.StepDefs
或config
包下方的任何位置。
您可以尝试以下任何方法:
将config
包重命名为pcz
。 这将使SpringBootCucumberApplication
的默认组件扫描通知您的pcz.Page
包。
将您的pcz.Page
包移动到pcz.StepDefs.Page
以便CucumberSpringConfiguration
的默认组件扫描会注意到它。
在CucumberSpringApplication
上使用ComponentScan注释,告诉它要扫描哪些包: @ComponentScan(basePackages = {"Page"})
。
旁注,你的包名应该是小写的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.