Mockito, test sırasında alay durumunu yönetmek için kullanılabilecek iki yöntem sağlar: `` `` `ve` ClearInVocations () '. Her iki yöntem de sahte durumları yönetmek için kullanılırken, farklı amaçlara hizmet ederler ve alaylar üzerinde farklı etkileri vardır.
Mockito'nun `RESET ()` yöntemi
Mockito'daki `RESET ()` yöntemi, sahte bir nesneyi tamamen sıfırlamak için kullanılır. Bu, sadece çağırma sayılarını temizlediği, aynı zamanda sahte üzerinde ayarlanan herhangi bir saplamayı da kaldırdığı anlamına gelir. Bu sorunlu olabilir, çünkü testleriniz için belirli davranışı sürdürmek istiyorsanız, sıfırladıktan sonra sahte olanı yeniden takmanızı gerektirir. `Reset () 'kullanımı genellikle caydırılır, çünkü karmaşık ve daha az odaklanmış testlere yol açabilir. Testlerinizin amacını gizleyebileceği ve [1] [5] [7] sürdürmelerini zorlaştırabileceğinden, kesinlikle gerekli olmadıkça `reset () 'kullanmaktan kaçınmanız önerilir.
Mockito'nun `ClearInVocations ()` yöntemi
Mockito 2.1'de tanıtılan `ClearInVocations ()` yöntemi, stubbingini sıfırlamadan bir sahte çağırma sayımlarını temizlemenizi sağlar. Bu, her testin yöntem çağrılarıyla ilgili temiz bir arduvazla başlamasını sağlarken aynı saplamaları kullanmaya devam edebileceğiniz anlamına gelir. Bu yöntem, durumlu bir senaryoda veya bağımlılık enjeksiyon çerçevelerini kullanırken etkileşimleri doğrulamanız gerektiğinde yararlıdır, ancak yine de az miktarda kullanılmalıdır. Genellikle gerekmedikçe, `ClearInvocations () 'kullanmaktan kaçınmanız önerilir, çünkü düşünceli bir şekilde kullanılmazsa testleri de karmaşıklaştırabilir [1] [4] [9].
Anahtar Farklılıklar
- Stubbing: `reset ()` tüm stubbing'i kaldırır, sahte olarak yeniden saplamanızı gerektirirken, `ClearInVocations ()` `inatlar bozulmadan bırakır.
- Çağırma sayıları: her iki yöntem de net çağırma sayımları, ancak `reset ()` bunu tam sıfırlamanın bir parçası olarak yaparken, `clearInVocations ()` özellikle çağırma sayımlarını hedefler.
- Test karmaşıklığı: Her iki yöntem de dikkatli kullanılmazsa daha karmaşık testlere yol açabilir, ancak `` reset () ', alayları yeniden saplama ihtiyacı nedeniyle daha fazla soruna neden olma eğilimindedir.
Özetle, her iki yöntem de sahte durumları yönetmek için kullanılabilirken, `reset ()` daha invaziv ve genellikle cesaret kırılırken, `ClearInVocations () 'daha hedeflenir, ancak yine de temiz ve odaklanmış testleri korumak için makul bir şekilde kullanılmalıdır.
Alıntılar:[1] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-pleware- use-of-mockitos-reset-Method
[2] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-a-mock-after-setup-in-mockito
[6] https://reftoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-ferify-method-reboot-ton-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesim.org/mockito-3-plear-invocations
[10] https://github.com/mockk/mockk/discussions/842