Dav*_*all 8 java tdd junit mocking mockito
我正在尝试创建一个类的Mockito模拟对象,其中包含一些相当繁重的网络和事务行为,我不想在我正在编写的当前单元测试中处理这些行为.但是,在实例化模拟对象时,Mockito似乎会调用实际类的默认构造函数.默认构造函数执行在此单元测试的上下文中导致问题的各种事物.
Mockito应该调用默认构造函数吗?有没有办法避免这种行为?
这是我创建模拟对象的方法:
ConcreteClassWithComplexDefaultConstructor mockObject = mock(ConcreteClassWithComplexDefaultConstructor.class);
Run Code Online (Sandbox Code Playgroud)
编辑:所以我想出了发生了什么.没有调用具体类的默认构造函数(正如Luciano指出的那样).但是,调用类的静态构造函数.据我所知,静态的东西和Mockito工作得不是很好,但有没有办法解决这个问题,即以某种方式让它忽略静态构造函数.然而,我并没有很高的期望......
好吧,事实证明我错了.Mockito使用CGLib和Objenesis来创建Object.如果您按照该链接说明它是如何不调用超类构造函数的.
使用以下代码可以轻松测试:
public class Test
public Test() {
// Never called.
System.out.println("Constructor was called.");
}
public static void main(String[] args) {
Test test = mock(Test.class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9662 次 |
| 最近记录: |