4

我想知道我如何使用 CDI 进行测试。和注射期间的模拟课程。

如果我有课:

@Named
@RequestScoped
public class ItemProcessor {

  @Inject
  private ItemDao itemDao;


  public void execute() {


    List<Item> items = itemDao.fetchItems();
    for (Item item : items) {
        System.out.println("Found item " + item);
    }
  }
}

如果我想在测试期间模拟 ItemDao 类,当我想测试 My ItemProcessor 时,我该怎么做?

4

2 回答 2

4

框架,如 mockito,即使在使用字段注入时也可以将依赖项设置为 mock:http: //docs.mockito.googlecode.com/hg/latest/org/mockito/InjectMocks.html

然而,一般来说,由于这个确切的原因,构造函数注入是首选的:可测试性。

于 2013-05-24T08:40:56.717 回答
2

例如,您可以使用 CDI“替代品”。

@Alternative
public class TestCoderImpl implements Coder { ... }

现在,只有在 beans.xml 中声明它作为替代时才会使用此 bean。

<alternatives>
    <class>package.TestCoderImpl</class>
</alternatives>

更多信息

于 2013-05-24T08:45:52.687 回答