Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockito'da alayları sıfırlamak için en iyi uygulamalar nelerdir


Mockito'da alayları sıfırlamak için en iyi uygulamalar nelerdir


Mockito'da alayları sıfırlamak, stubbing ve etkileşimlerini temizleyerek sahte nesneleri yeniden kullanmanızı sağlayan bir özelliktir. Bununla birlikte, `` reset () `kullanılması, kötü yapılandırılmış testleri gösterebileceği için kesinlikle gerekli olmadıkça caydırılır. İşte Mockito'da alayları sıfırlamak için en iyi uygulamalar:

Ne zaman `` sıfırlama () '

-`reset ()`: `raset ()` `birincil nedeni, eski kodda veya üçüncü taraf arayüzlerinde kullanılanlar gibi konteyner enjekte edilen alayları desteklemektir. Çoğu durumda, özellikle iyi tasarlanmış test güdümlü kodla, `reset () 'kullanmaktan kaçınmalı ve bunun yerine küçük, odaklanmış test yöntemleri oluşturmaya odaklanmalısınız [2] [4].

- Kod kokusu: Kendinizi bir test yönteminde `reset ()` kullanmaya ihtiyaç duyuyorsanız, testlerinizin çok karmaşık veya çok fazla senaryo kapsadığının bir işareti olabilir. Bu, testlerinizi veya test edilen kodu yeniden düzenleme ihtiyacını gösterebilir [2].

`` sıfırlama () `için alternatifler

- Yeni Mocks Oluştur: Mocks'u sıfırlamak yerine, her test yöntemi için yeni sahte örnekler oluşturmayı düşünün. Bu yaklaşım, her testin temiz bir arduvazla başlamasını sağlar ve mevcut testlerden önceki testlerden etkileşim riskini azaltır [4].

- `ClearInVocations ()` kullanın: Sadece çağırma geçmişini temizlemeniz gerekiyorsa (örneğin, stubbing'i etkilemeden etkileşimleri doğrulamak için), `mockito.clearInvocations ()` kullanın. Bu yöntem, belirli senaryolarda yararlı olabilen saplamaları sıfırlamadan çağırma geçmişini ortadan kaldırır [4].

alayları sıfırlamak için en iyi uygulamalar

- Her testten sonra sıfırlayın: Mocks'u sıfırlamanız gerekiyorsa, her test yönteminden sonra Junit'te bir `@@sonra ek açıklama veya` quactheach () `scalatest'de yapın. Bu, her testin temiz bir sahte durumu ile başlamasını sağlar [3] [10].

- Testlerden önce sıfırlamaktan kaçının: Her testten önce alayların sıfırlanması, Testin başlangıcında sahte bir durumun içinde olduğu konusunda karışıklığa yol açabilir. Testlerden sonra yeni alaylar oluşturmak veya sıfırlamak genellikle daha açıktır [10].

- Çerçeve özelliklerini kullanın: Bahar gibi çerçevelerde, `@mockbean 'gibi ek açıklamalar her testten sonra sahte sıfırlamayı otomatik olarak işleyebilir ve manuel sıfırlama ihtiyacını ortadan kaldırabilir [10].

Çözüm

Mockito, belirli kullanım durumları için `reset ()` yöntemi sağlarken, genellikle daha temiz, daha odaklanmış test tasarımı lehine kullanımından kaçınılması tavsiye edilir. Her test için yeni alaylar oluşturarak veya sahte durumları yönetmek için çerçeve özelliklerini kullanarak, manuel sıfırlamalara ihtiyaç duymadan sağlam ve bakım yapılabilir testleri sağlayabilirsiniz.

Alıntılar:
[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[3] https://twitter.github.io/finatra/user-guide/testing/mocks.html
[4] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-pleware- use-of-mockitos-reset-Method
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-do-mocking-spring-boot/
[7] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.mockito.reset
[8] https://github.com/mockito/mockito/issues/183
[9] https://www.toptal.com/java/a-guide-to-emveryday-mockito
[10] https://stackoverflow.com/questions/18164123/how-to-clean up-mocks-inpring-tests-when-using-mockito