2012-03-09 71 views
2

使用Mockito或其他类似的框架。有没有办法模拟一个包私人类? 我试图测试我的服务层嘲笑我的DAO类。问题是DAO实例是私有包,只能通过工厂获得。嘲讽包私人类

MyPackagePrivateDao mockedDao = mock(MyPackagePrivateDao.class); 

编译器说无法从包的外部访问该类。 你有什么例子吗?

感谢

回答

4

这是不可能的Mockito,它需要修改实际的类的字节码。这不是一个计划的功能。

难道你没有接口,你最终可以嘲笑这些DAO吗?

另一种选择是把眼光放在PowerMock这是伟大的处理遗留代码,即当软件设计迫使你嘲笑静,私人,最后等

+0

我确实有接口。我不知道我可以模拟接口而不是实现类。谢谢! – Oscar 2012-03-09 22:46:32

+0

不客气;) – Brice 2012-03-10 00:00:20

3

据推测,您的问题是,你的SUT (因此它的测试)与你想要模拟的类不同,否则就不会有问题。

我会解决这个问题的方法是在您想要模拟的类的测试类中编写静态实用程序方法。这个实用方法应该创建并返回所需类的模拟,它可以执行,因为它在正确的包中。然后您可以调用实用程序方法,而不是调用mock(MyPackagePrivateDao.class)