我有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()中。

08-24 12:36