Mockitoの `reset()`メソッドは、モックオブジェクトを再利用できるようにリセットできる機能です。ただし、その使用は一般に、モッキートの開発者とユーザーによって落胆しています。これは、過度に複雑できれいにテストが困難な設計が不十分なテストまたはコードを示すことができるためです[7] [9]。代わりに、推奨されるアプローチは、各テスト方法に新しいモックを作成して、テストの独立性と明確性を確保することです[7] [9]。
###他のモッキングライブラリとの比較
1。JMOCK2:Mockitoとは異なり、JMock2はコンテキストを使用して期待を管理し、各テスト方法で再構築されます。これは、Jmock2がMockitoのように明示的なリセットを必要としないことを意味します[10]。 JMOCK2のアプローチは、モックを手動でリセットする必要なく、テストの分離を維持するのに役立ちます。
2。EasyMock:EasyMockは通常、リセットメソッドも必要ありません。 Mockitoで推奨される練習と同様に、各テストに新しいモックオブジェクトを作成するように設計されています。模擬開発者のSzczepan Faberは、EasyMock [8]を使用している間はリセット機能を必要としないと述べています。
3。Mockito対その他のライブラリ:一般に、JMOCK2やEasyMockなどの他のモッキングライブラリは、モック状態を自動的に管理するか、各テストの新しいモックの作成を奨励することにより、クリーンなテストアプローチを促進します。 Mockitoの `reset()`メソッドは、モッキングフレームワークの標準ではなく、例外です。
###ベストプラクティス
- `reset()`を使用しないでください:ockがコンテナによって注入され、各テストで再現できない場合など、絶対に必要な場合は、 `reset()`を使用しないようにすることをお勧めします。代わりに、各シナリオに新しいモックを使用して、シンプルで焦点を絞ったテストを作成することに焦点を当てます[7] [9]。
- `clearInvocations()`:スタブをリセットせずに相互作用をクリアする必要がある場合は、 `clearInvocations()`を使用します。この方法では、記録された相互作用をクリアしながらスタブを保持できます。これは、特定のシナリオで役立ちます[5]。
- テスト可能性のコードをリファクタリングする: `reset()`を頻繁に使用する必要があることに気付いた場合、コードがリファクタリングから利益を得てテスト可能にすることができることを示している可能性があります。これには、複雑な方法を分解したり、依存関係の注入を改善したりすることがあります[9]。
要約すると、Mockitoは「reset()」メソッドを提供しますが、その使用は一般に、各テストに新しいモックを作成することを支持して落胆します。他のモッキングライブラリは、多くの場合、同様のプラクティスを促進し、複雑な模擬管理よりもクリーンで独立したテストを強調します。
引用:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/opsurfulate-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-porsuprate-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests- When-using-mockito