我有Wicket Form和ProjectNameValidator类:
@Inject
ProjectDao dao;
public ProjectNameValidator() {
CdiContainer.get().getNonContextualManager().inject(this);
}
这里的注入是因为@Inject注释仅在Wicket组件或Behavior中有效,这里没有CdiContainer.get()为null.getNonContextualManager()。inject(this);
但是当我有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中的Form上遇到异常:
CdiContainer.get().getNonContextualManager().inject(this);
IllegalStateException:没有绑定到应用程序的DCI上下文。
答案 0 :(得分:1)
您的应用程序中有一个单独的CdiContainer,它未在测试范围内初始化。所以CdiContainer.get()实际上是空的。了解如何初始化CdiContainer测试上下文,它取决于您的实现,并将其添加到测试setUp()。