Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockitoのリセット方法は、clearinvocationsとどのように異なりますか


Mockitoのリセット方法は、clearinvocationsとどのように異なりますか


Mockitoは、テスト中にモックの状態を管理するために使用できる2つの方法を提供します: `reset()`および `clearInvocations()`。両方の方法はモック状態を管理するために使用されますが、さまざまな目的に役立ち、モックに明確な影響を及ぼします。

mockitoの `reset()`メソッド

モキトの `reset()`メソッドは、モックオブジェクトを完全にリセットするために使用されます。これは、呼び出し数をクリアするだけでなく、模擬に設定されたスタブを削除することを意味します。これは、テストの特定の動作を維持したい場合に、リセット後にモックを再スタブする必要があるため、問題が発生する可能性があります。 `reset()`の使用は、一般に、複雑で焦点の少ないテストにつながる可能性があるため、一般的に落胆します。絶対に必要な場合を除き、「1] [5] [7]を維持するのが難しくなる可能性があるため、絶対に必要な場合を除き、「reset()」の使用を避けることをお勧めします。

mockitoの `clearinvocations()`メソッド

モッキート2.1で導入された「ClearInvocations()」メソッドを使用すると、スタブをリセットせずにモックの呼び出し数をクリアできます。これは、各テストがメソッドの呼び出しに関するクリーンなスレートから始まることを保証しながら、同じスタブを使用し続けることができることを意味します。この方法は、ステートフルシナリオで相互作用を検証する必要がある場合、または依存関係インジェクションフレームワークを使用する場合に役立ちますが、それでも控えめに使用する必要があります。必要に応じて「ClearInvocations()」を使用しないようにすることを一般的に推奨しています。

###キーの違い

- スタブ: `reset()`すべてのスタブを削除するため、模擬vocations() `はスタブをそのままにします。
-Invocationカウント:両方のメソッドは呼び出しカウントをクリアしますが、 `reset()`はフルリセットの一部としてそうします。
- テストの複雑さ:どちらの方法でも慎重に使用されないと、より複雑なテストにつながる可能性がありますが、「reset()」は、模擬を再スタブする必要があるため、より多くの問題を引き起こす傾向があります。

要約すると、両方の方法を使用してモック状態を管理できますが、「reset()」はより侵襲的で一般的に落胆しますが、「clearinvocations()」はよりターゲットを絞っていますが、清潔で集中したテストを維持するために賢明に使用する必要があります。

引用:
[1] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-porsuprate-use-of-mockitos-reset-method
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearInvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-the-reternative-to-resetting-a-mock-after-setup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear invocations
[10] https://github.com/mockk/mockk/discussions/842