【发布时间】:2013-08-13 13:38:27
【问题描述】:
我需要使用 Java 为 Android 应用程序编写单元测试。我目前需要做的是创建一个对象 Picture 并将其用于一些测试。这个对象的问题是,它的构造函数有一个方法调用:
public Picture(File imageFile) {
this.filename = imageFile.getName();
this.imageDimension = getImageDimension();
/.../
}
方法 getImageDimension() 引用了其他一些类,因此我更喜欢可分离性来模拟它的结果。对于模拟,我需要给 Mockito 一个构造函数,所以在我看来这就像一个鸡蛋问题。
那么,有没有机会用 Mockito 模拟对象构造函数中使用的函数?如果不是,不修改原代码如何解决这种情况?
【问题讨论】:
-
Picture 类如何获取“其他一些类”的实例。看起来那些是你想要注入模拟的那些。
-
@bowmore 它调用具有私有静态构造函数的 Android 框架 MainActivity 类。据我所知,从普通的 TestCase 类中模拟它是很棘手的。
-
你不能把它隐藏在接口后面,并依赖接口来模拟它吗?
-
@bowmore 嗯,有可能,但我不确定(MainActivity是Android世界的必修神(类))。如果我能做到,那将意味着更改原始代码,如果我决定更改代码,我可以改为向 Picture 类添加一个用于测试的额外构造函数。我希望有一种神奇的技术,这样我就可以保持原始代码不变......