mockitoSession和MockitoAnnotations.initMocks有什么区别

时间:2019-06-13 08:47:47

标签: java unit-testing mockito testng

我读了有关MockitoSession以及MockitoAnnotations.initMocks的文章,但我不明白两者之间的区别是什么?

MockitoAnnotations.initMocks(this);

Mockito.mockitoSession()
            .initMocks(this)
            .strictness(Strictness.STRICT_STUBS)
            .startMocking();

mockitoSession做什么,而MockitoAnnotations不做什么?

1 个答案:

答案 0 :(得分:1)

必须调用MockitoAnnotations.initMocks(this)方法来初始化带注释的字段。

MockitoAnnotations.initMocks(this);初始化带有Mockito注释的字段。 允许快速创建测试所需的对象。 最小化重复的模拟创建代码。 使测试类更具可读性。 由于使用字段名称标识模拟,使验证错误更易于阅读。

MockitoSession是模拟会话,在此期间用户创建和使用Mockito模拟。通常,会话是单个测试方法的执行。 MockitoSession初始化模拟,验证用法并检测不正确的存根。会话启动时,必须使用finishMocking()结束,否则在创建下一个会话时会触发UnfinishedMockingSessionException。

当您不能使用MockitoJUnitRunner或MockitoRule时,MockitoSession很有用。例如,您使用TestNG而不是JUnit。另一个例子是当使用不同的JUnit运行程序(Jukito,Springockito)时,它不能与Mockito自己的运行程序结合使用。