Mockito'daki `@Generatemocks` ve`@GeneratenciMocks` ek açıklamaları, DART ve Flutter uygulamalarında birim testi için sahte sınıflar oluşturmak için kullanılır. Her iki ek açıklama da aynı birincil amaca hizmet ederken, çözülmüş yöntem çağrılarını kullanırken davranışlarında önemli ölçüde farklılık gösterirler.
@generatemocks
- Underbated yöntemleri için davranış: `@Generatemocks` ile oluşturulan sahte bir nesneye bir yöntem çağrıldığında ve bu yöntem için hiçbir saplama tanımlanmadığında, Mockito bir istisna atacaktır. Bu davranış, bir test sırasında çağrılması beklenen tüm yöntemler için saplamaları açıkça tanımlamanızı ve test kurulumunda potansiyel gözetimleri yakalamaya yardımcı olmanızı sağlar.
- Kullanım: Bu ek açıklama genellikle alaylarınızın davranışı üzerinde sıkı kontrol istediğinizde kullanılır ve beklenmedik yöntem çağrılarının hemen hata olarak işaretlenmesini sağlar.
- Taşınma Durumu: `@Generatemocks '', dikkatlice yönetilmezse daha ayrıntılı test koduna yol açabilecek katı davranışından dolayı`@generatenicomocks 'ile karşılaştırıldığında daha az önerilir.
@generatenicemocks
- Underbated yöntemleri için davranış: Aksine, `@generateCemocks 'ile oluşturulan alaylar, çözülmemiş bir yöntem çağrıldığında yöntemin dönüş türü için varsayılan, yasal bir değer döndürür. Bu varsayılan değer, test mantığında kullanılmak üzere tasarlanmamıştır, ancak boş veya eksik değerler nedeniyle çalışma zamanı hatalarını önlemeye yarar sağlar.
- Kullanım: Bu ek açıklama çoğu kullanım durumu için önerilir, çünkü olası her yöntem çağrısını engelleme ihtiyacını azaltarak test yazımını basitleştirir. Unutulmuş saplamalar nedeniyle başarısızlıklardan kaçınarak testleri daha sağlam hale getirir.
- Ek Özellikler: `@GenerateCemocks` yalnızca argüman listesinde` `Mockspec'in üretilen sahte sınıfların özelleştirilmesinde daha fazla esneklik sağlar. Örneğin, `` Mockspec '' de `` parametresini kullanarak sahte sınıf için özel bir ad belirleyebilirsiniz.
Anahtar Farklılıklar
1. Düzenlenmemiş yöntemlerin ele alınması: En önemli fark, her ek açıklamanın yöntemin açık saplamalar olmadan nasıl çağrıldığını nasıl ele aldığıdır. `@Generatemocks` bir istisna atarken,`@Generatenicemocks 'varsayılan bir değer döndürür.
2. Kod basitliği ve sağlamlık: `@@generatenicocks 'genellikle kapsamlı stubbing ihtiyacını azaltarak daha basit ve daha sağlam test koduna yol açar.
3. Özelleştirme: `@GenerateCemocks '' Mockspec 'aracılığıyla daha fazla özelleştirme seçenekleri sunar ve özel sahte sınıf adlarına ve diğer gelişmiş yapılandırmalara izin verir.
Özetle, `@Generatenicocks` genellikle test kodunu basitleştirme ve çözülmüş yöntemlerden dolayı hataları azaltma yeteneği için tercih edilirken,`@Generatemocks ', sahte davranış üzerinde açık kontrolün gerekli olduğu belirli senaryolarda yararlı olabilecek daha sıkı bir yaklaşım sağlar [1] [4] [11].
Alıntılar:[1] https://www.amaysim.technology/blog/fluttert-test-mockito-generatemocks-vs-generatenicemocks
[2] https://www.reddit.com/r/golang/comments/ua0hps/generated_vs_handwritten_mocks/
[3] https://blog.logrock.com/unit-testing-flutter-code-mockito/
[4] https://pub.dev/documentation/mockito/latest/Annotations/Generatenicemocks-class.html
[5] https://plugins.jetbrains.com/plugin/23513-generat-flutter-mocks
[6] https://stackoverflow.com/questions/72390220/flutter-generatemocks-is-not-nogerated-mock-class
[7] https://github.com/dart-lang/mockito/blob/master/null_safety_readme.md
[8] https://github.com/dart-lang/mockito/issues/367
[9] https://github.com/dart-lang/mockito/issues/422
[10] https://stackoverflow.com/questions/74406977/the-generatemocks-notation-contains-a-class-hch-quears-to-already-tom-be-mocked
[11] https://pub.dev/packages/mockito