Junit 模拟包私有类

Junit 模拟包私有类,junit,mocking,mockito,Junit,Mocking,Mockito,使用Mockito或其他类似的框架。有没有办法模拟包私有类? 我试图模拟我的DAO类来测试我的服务层。问题是DAO实例是包私有的,只能通过工厂获得 MyPackagePrivateDao mockedDao = mock(MyPackagePrivateDao.class); 编译器说不能从包外部访问该类。 你有什么例子吗 感谢这在Mockito中是不可能的,它需要修改实际类的字节码。这不是计划中的功能 难道您没有最终可以为这些DAO模拟的接口吗 另一个选择是查看PowerMock,它非常适合

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

MyPackagePrivateDao mockedDao = mock(MyPackagePrivateDao.class);
编译器说不能从包外部访问该类。 你有什么例子吗


感谢

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

难道您没有最终可以为这些DAO模拟的接口吗


另一个选择是查看PowerMock,它非常适合处理遗留代码,即当软件设计迫使您模拟静态、私有、最终等时。

大概,您的问题是您的SUT(及其测试)与您要模拟的类位于不同的包中,否则不会有问题


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

我确实有接口。我不知道我可以模拟接口而不是实现类。谢谢