Li-*_* Yu 2 java junit unit-testing jmockit mockito
我想弄清楚mockito是如何工作的,以便进行调试.我想知道带有@Mock注释的对象,什么时候初始化?喜欢,在@Before之前或@Before之后?
如果有几个不同的构造函数,mockito如何确定要调用哪些构造函数?
如果我使用jmockit @Mocked,那么上面的问题是否有任何不同的答案?
谢谢!
使用Mockito创建的模拟对象不会调用任何构造函数或静态初始化程序.(这是通过实现Objenesis在旧版本中的Mockito和ByteBuddy在新版本中).因此,所有的字段是未初始化的,且无副作用发生的构造在所有包括你可能会看到抛出的异常.
相比之下,间谍对象确实有他们的构造函数.如果你没有初始化字段,Mockito将默认调用无参数构造函数(公共或私有),并且可以在初始化程序内调用所选的构造函数.
@Mock注释初始化的顺序取决于您用来初始化模拟的技术:
MockitoJUnitRunner,则在初始化程序块,构造函数和@Rules之后,以及在BlockJUnit4ClassRunner中定义的任何其他@Befores之前初始化模拟.MockitoRule,mocks在任何@Before方法之前被初始化,但是与其他@Rules相比,它是以未定义的顺序初始化的,除非你手动链接它们RuleChain.MockitoAnnotations.initMocks(),则在调用该方法时,即在初始化程序块和规则之后,以及(如果在@Before方法中调用)与其他@Before方法相比,默认顺序初始化模拟.| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |