2011-05-05 60 views
0

下面是代码:使用autowire的Spring bean的JUnit?

public class Customer 
{ 
    @Autowired 
    private Person person; 
    //some business logic using person object 
} 

现在我需要编写JUnit测试案例Customer类,如何做呢? 我应该使用Mockito来模拟人物对象,然后执行业务逻辑,如果是的话,如何设置模拟人物对象作为客户的属性,而无需任何setter/getter?

谢谢!

回答

8

对我来说听起来像是你超越了它。

我不会嘲笑一个业务对象模型;这是基于接口的类,当你不需要集成测试时。

我不会将Person注入到JUnit测试中;我只是简单地打电话给“new”,实例化适合我的测试的东西,然后继续。

如果您的客户必须拥有Person的实例,我会推荐构造函数注入。如果必须的话,你可以通过一个模拟人。

+0

除非Person只是一个结构 - 甚至可能是 - 嘲笑是一个好主意。这是客户的单元测试,对吧?你为什么不试图去分析其他重要类的行为? – Ladlestein 2011-05-05 17:38:22

+1

我在想嘲笑一个像Person这样的商业对象不会给我买任何东西,只是调用新的并实例化一个。 – duffymo 2011-05-05 17:44:26

+0

我想问的另外一件事是,如果DAO调用是从Action对象发生的,那么尽管为action编写junit应该模拟dao调用,因为我们正在编写单元测试'cos,如果我们不模拟DAO它将被归类为集成测试? – 2011-05-06 03:09:26