Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 従来のハムクレストマッチャーにモッキトーハムクレストを使用することの利点は何ですか


従来のハムクレストマッチャーにモッキトーハムクレストを使用することの利点は何ですか


従来のHamcrestマッチャーでMockitohamcrestを使用すると、特にMockitoで作業してユニットテストでモッキングする場合は、いくつかの利点があります。主な利点は次のとおりです。

1。モッキートとの統合:Mockitohamcrestを使用すると、HamcrestマッチャーをMockitoのモッキングフレームワークとシームレスに統合できます。この統合は、従来のHamcrestマッチャーだけでは直接サポートされていない複雑な引数マッチングを使用して、スタブを設定したり、メソッド呼び出しを検証したりするために重要です。たとえば、「mockitohamcrest.argthat」を使用して、Hamcrestマッチャーをモッキートマッチャーに変換して、モキトのコンテキストでハムクレストのリッチマッチャーセットを使用できるようにすることができます[1] [10] [12]。

2。バージョンの互換性の回避:モキトは、過去にユーザーに問題を引き起こしたバージョンの非互換性を回避するために、バージョン2.1.0のHamcrestからデカップされました。 Mockitohamcrestは、Hamcrestの特定のバージョンにしっかりと結合することなくHamcrestマッチャーを使用する方法を提供し、潜在的な競合を減らします[1] [10]。

3。引数マッチングの柔軟性:Mockitohamcrestを使用すると、Hamcrestの柔軟で表現力豊かなマッチャーを使用して、複雑な引数マッチングシナリオを定義できます。これは、特定のサブストリングや特定の範囲内の数字を含む文字列など、特定の条件に一致する引数でメソッドが呼び出されたことを確認する必要がある場合に特に役立ちます[4] [12]。

4.読みやすさの改善と自己文書コード:Mockitohamcrestを介してHamcrest Matchersを使用することにより、テストは自己文書的で読みやすいことがあります。マッチャーはテストの意図を明確に表現し、開発者が追加のコメントを必要とせずにテストされているものを理解しやすくします[3] [9]。

5.より良いエラーメッセージ:アサーションが失敗すると、Hamcrestは詳細かつ意味のあるエラーメッセージを提供します。これは、デバッグに大幅に役立ちます。これは、Mockitohamcrestを使用する場合に特に有益です。これは、模擬検証が失敗した理由を特定するのに役立ち、問題の診断が容易になるためです[3] [9]。

6。カスタマイズと拡張性:HamcrestのMatcher APIを使用すると、特定のテストのニーズに合わせたカスタムマッチャーを作成できます。 Mockitohamcrestと組み合わせると、この拡張性により、アプリケーションのロジック[6] [9]に正確に一致する、よりターゲットを絞った表現型テストを作成できます。

要約すると、Mockitohamcrestは、Hamcrestの柔軟で表現力豊かなマッチャーとMockitoのモッキング機能の強力な組み合わせを提供し、テストの読みやすさ、柔軟性、保守性を向上させます。

引用:
[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify-invocation-of-collection-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.mockitohamcrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.9/org/mockito/argumentmatcher.html
[6] https://www.javacodegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.hamcrest.mockitohamcrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2fargumentmatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher