所以,让我说我的活动如下。假设所有生命周期事件等都已正确创建,在创建活动时也不例外。
public class ButtonClickActivity extends Activity implements OnClickListener {
... onCreate etc. ...
@Override
public void onClick(View v) {
logInfo();
}
protected void logInfo() {
Log log = new Logger();
log.log('foo');
...
}
}
你究竟如何测试onClickMethod调用callMyOtherMethod?你如何测试logInfo创建一个新的Logger和.log(' foo')?让我们假设您拥有所有框架。
我曾尝试使用Robolectric(这对于高级别测试很好,但实际上似乎并没有让您详细了解测试方法是否调用另一种方法)。
似乎你必须将它与模拟框架/注入一起使用,以便至少验证注入的对象行为。它不能测试新的建筑'因此,您不得不为每个对象强制使用工厂,即使对于您从其他框架中使用的对象等也是如此。
我已经使用JMockIt(允许您验证每个新构造等)进行了一次拍摄,但似乎还存在ByteCode操作的问题,如果它尝试重写字节码,它基本上会失败特别是Android活动和视图,以及其他问题。
所以我的问题是他们采取的策略是什么,而不是'它是一个实施细节'或者'不需要进行测试'?我确定你当然不想测试每一个细节方法调用,但让重要的方法调用未经验证也不是一个好的解决方案。