3

我有 Wicket Form 和 ProjectNameValidator 类:

@Inject
ProjectDao dao;

 public ProjectNameValidator() {       
    CdiContainer.get().getNonContextualManager().inject(this);
}

这里的注入是因为@Inject 注解只在 Wicket 组件或 Behavior 中起作用,这里是 null 没有 CdiContainer.get().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 中的表单上遇到异常:

CdiContainer.get().getNonContextualManager().inject(this);

IllegalStateException:没有绑定到应用程序的 DCI 上下文。

4

1 回答 1

1

您的应用程序中有一个未在测试范围内初始化的单例 CdiContainer。所以 CdiContainer.get() 真的是空的。了解如何初始化 CdiContainer 测试上下文,这取决于您的实现,并将其添加到测试 setUp()。

于 2013-11-17T16:46:37.447 回答