我有Wicket Form和ProjectNameValidator类:
@Inject
ProjectDao dao;
public ProjectNameValidator() {
CdiContainer.get().getNonContextualManager().inject(this);
}
这里的注入是因为@Inject批注仅在Wicket组件或行为中有效,在没有CdiContainer.get()。getNonContextualManager()。inject(this)的情况下为null。
但是当我有WicketTester时,TestCreateprojectPage:
public class TestCreateProject {
private WicketTester tester;
@Before
public void setUp() throws Exception {
tester = new WicketTester();
}
@Test
public void createProjectPageRendersSuccessfully() {
tester.startPage(CreateProject.class);
tester.assertRenderedPage(CreateProject.class);
}
}
我在此行的ProjectNameValidator中的CreateProject.java中的窗体上遇到异常:
CdiContainer.get().getNonContextualManager().inject(this);
IllegalStateException:没有绑定到应用程序的DCI上下文。
最佳答案
您的应用程序中有一个单例CdiContainer,未在测试范围内初始化。因此CdiContainer.get()实际上是空的。了解如何初始化CdiContainer测试上下文,具体取决于您的实现,并将其添加到测试setUp()中。