Java mockitoSession和MockitoAnnotations.initMocks之间有什么区别

Java mockitoSession和MockitoAnnotations.initMocks之间有什么区别,java,unit-testing,mockito,testng,Java,Unit Testing,Mockito,Testng,我读过关于mockitoSession和MockitoAnnotations.initMocks的文章,但我不明白两者之间的区别是什么 MockitoAnnotations.initMocks(this); Mockito.mockitoSession() .initMocks(this) .strictness(Strictness.STRICT_STUBS) .startMocking(); mockitoSessi

我读过关于mockitoSession和MockitoAnnotations.initMocks的文章,但我不明白两者之间的区别是什么

MockitoAnnotations.initMocks(this);

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

mockitoSession做什么而MockitoAnnotations不做什么?

MockitoAnnotations.initmocks必须调用此方法才能初始化带注释的字段


MockitoAnnotations.initMocksthis;初始化用Mockito注释注释的字段。 允许速记创建测试所需的对象。 最小化重复的模拟创建代码。 使测试类更具可读性。 使验证错误更易于读取,因为字段名用于标识模拟

何处为

MockitoSession是一个mocking会话,在该会话中,用户创建并使用Mockito mock。通常,会话是单个测试方法的执行。MockitoSession初始化mock,验证使用情况并检测不正确的存根。会话启动时,必须以finishMocking结束,否则在创建下一个会话时会触发UnfinishedMockingSessionException


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

那么区别在于mockitosession用于单个测试,而initMocks用于整个类测试?因为MockitoAnnotations.initMocksthis;根据我所注意到的错误,还初始化mock、验证用法并检测不正确的stubbing。你能举一个什么时候使用MockitoAnnotations和什么时候使用MockitoSession的例子吗。