在编译时嘲笑

dce*_*chi 2 java integration-testing seam mocking mockito

我正在使用一些遗留代码,我需要测试一些昂贵的服务被调用(它会进行网络呼叫,发送电子邮件等).

我可以通过使用的框架(jboss seam 2)注入假服务而不是原始服务.看到这个问题:单元测试的Mock @ org.jboss.seam.annotations.in行为

我现在希望我的假对象是一个更聪明的模拟断言是否已被调用,等等.我希望它是一个Mockito或Easymock或其他一些模拟.但是,由于接缝2和接缝测试处理注射的方式,在测试中构建模拟经典方式然后注入它是不起作用的.请参阅上面的链接.

问题:有没有办法让我的模拟扩展或注释,以成为Mockito或模拟?如何在测试中获得对它的引用?

JB *_*zet 6

我不同意你所关联的问题的答案.单元测试应该独立于它应该工作的环境测试该类.依赖注入框架正好用于能够在单元测试中注入模拟依赖项,而无需任何复杂的环境来运行单元测试.

我不知道Seam,但它的文档说@In可以放在属性访问器上.我会像这样测试这个类:

public class someBean implements Serializable {
    private ApplicationBean applicationBean

    @In
    protected void setApplicationBean(ApplicationBean applicationBean) {
        this.applicationBean = applicationBean;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我只是打电话给setter在单元测试中注入mock.

您也可以让代码保持原样,但提供一个setter或一个额外的构造函数,以便能够注入一个模拟的applicationBean.