KWJ*_*104 5 java unit-testing easymock mocking
可以说我有一个方法:
someMethod(X anObject)
Run Code Online (Sandbox Code Playgroud)
其中X是一种极其复杂的对象.通过这个我的意思是它不是一个可以轻易实例化的东西.我需要以某种方式单元测试someMethod,但我不能这么简单地创建一个X对象作为参数放入.
所以我首先考虑尝试模拟对象,但我遇到的问题是someMethod函数调用anObject的许多方法,这意味着被模拟的X对象具有需要调用的大量函数,因此需要模拟预期.更糟糕的是,这些被调用的X对象方法返回更多的X对象,这意味着我必须模拟对象,以期望模拟方法调用,以返回更多的模拟对象.
关于这种情况,我有几个问题,因为我对单元测试的概念不熟悉:
如果有人想知道我到底在做什么,我正在使用IDebugContextListener接口来获取有关java调试器上给定步骤的堆栈帧数据的调试信息.在"X",我指的是由该接口定义的对象在这里,包括对象,如IValue,IVariable和IStackframe.所有这些变量都是在运行时由Java调试器提供给我的.
您遇到这种困难的事实是设计问题的症状.当某些东西很难测试时,重构直到不难测试.
如果一个对象需要调用另一个对象的太多方法,那么封装就很差,责任也很差.据推测,没有遵循单一责任原则.如果代码调用返回对象的方法,并且必须依次调用方法,则不遵循Demeter法则.
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |