gst*_*low 6 testing junit unit-testing mockito powermock
我有同一个班级
class MyCalss{
final static SomeClass field = new SomeClass();
...
}
Run Code Online (Sandbox Code Playgroud)
我应该模拟MyCalss的实例.这个模拟应该包含像真实对象的字段.
我怎样才能实现它?
Mocking 操作方法和接口,而不是字段;此外,它对实例成员进行操作,而不是对静态成员进行操作。Mockito 和 Powermock 不是解决这个问题的正确工具。
虽然您可以使用反射来设置最终字段,但您正在有效地处理自己的声明,并受到JLS 17.5.3的限制和危害。
更好的设计是在被测系统中重写方法以注入其 SomeClass 依赖项:
public void methodUnderTest() {
methodUnderTest(MyClass.field);
}
/** Package-visible for testing. Test this method instead. */
void methodUnderTest(SomeClass someClass) {
someClass.firePhotonTorpedoes();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8233 次 |
| 最近记录: |