JUNIT sınaması için korunan özel yöntemleri değiştirmek iyi bir fikir midir?Test için korunmak üzere özel yöntemlerin değiştirilmesi
cevap
Bazen yararlıdır, evet.
Eğer sınıf genişletilebilirse, yöntemi sonlandırdığınızdan emin olun. Ayrıca, yöntemin, alt sınıflar veya aynı paketin harici sınıfları tarafından çağrılmaması gerektiği gerçeğini de belgeleyebilirsiniz.
Yöntemin gerçekten gizli olması gerektiğini anlamak için Guava @VisibleForTesting notunu kullanıyorum.
Gözlerimi @VisibleForTesting'e açtığınız için teşekkür ederiz. Bunun olduğunu bilmiyordum. Yine de bunun testin amacı için uygulamanın sözdizimini etkilemesi açısından biraz kusurlu olduğunu düşünüyor, ancak özel olması gereken üyeleri ve yöntemleri açığa çıkarmak daha iyidir. Test yöntemlerine sınırlama yapmak, aşırı katı ve bazen de pratik olmayan bir kısıtlama gibi görünüyor. – Lolo
Yöntemler yerine yerel paketi yapabilirsiniz.
Yansıma kullanarak özel yöntemi çağırabilir veya private
yöntemlerinin doğrudan dolaylı olarak test edilmemesi gerektiğine karar verebilirsiniz.
Genel olarak hayır. Birim testi fikri test etmek ... birimleri. Veya başka bir deyişle arayüz metotlarının uygulamaları. "Göremediğiniz" bir yöntemi test etmek isterseniz, bu bir kod kokusu olabilir. Belki de iş mantığını UI kodundan veya başka bir şeyden ayırmadın.
En iyi fikir mimarinizi yeniden düşünmek olacaktır. Ancak alternatif, kodunuzu sınamak değilse, bu yöntemlerin korunmasını sağlamak iyi bir fikirdir.
@ Kullanıcı714965 önerildiği gibi refactor'ı tercih etseniz de, PowerMock'un MockPrivate özel yöntemlerin görünürlüğünü açmadan alay işlemini yapabilir.
Testlerinizi önce yazmak genellikle özel yöntemlerle uğraşmanıza gerek olmayan bir tasarıma yol açar.
- 1. JavaName sorgusuna geçirilmek üzere TableName değiştirilmesi gerekiyor
- 2. Özel karakterlerin tire işaretleriyle değiştirilmesi
- 3. java önbellekleri, yöntemlerin sonuçlarını
- 4. java @SafeVarargs Niçin özel yöntemlerin son haline gelmesi gerekiyor
- 5. Python setup.py özel test komutu için test bağımlılıkları
- 6. Özyinelemeli Yöntemlerin Büyük Sayısı
- 7. Özel geçerlilik denetleyicisi için test oluşturma
- 8. değiştirilmesi içeriği()
- 9. Java Uygulaması için Masaüstü Simgesinin Değiştirilmesi
- 10. Yöntemlerin toplanması olarak yakut modülü
- 11. Ruby'de gönder ve public_send yöntemlerini ne zaman kullanılır? Özel yöntemlerin yanı sıra herkese çağrı yapmak için
- 12. Eclipse'de çalışmak üzere özel görev etiketleri nasıl alınır?
- 13. EUnit özel işlevlerini test edemiyor
- 14. değiştirilmesi foreach
- 15. Yönlendirenin değerinin değiştirilmesi
- 16. Bir StateListDrawable'da kullanılmak üzere özel bir durum oluşturmak mümkün mü?
- 17. JMH kullanarak yöntemlerin sırasını kontrol edin
- 18. MS Test için nasıl özel bir özellik oluşturuyorsunuz?
- 19. Sbt'de test görevinden önce yürütmek için özel görev nasıl eklenir?
- 20. Test sonucu için JMockit üzerinden özel bir yöntem çağırma
- 21. PyCharm 1.1 - django test çalıştırıcısı için özel ayarları kullanma
- 22. Cümlenin değiştirilmesi için RegExp Replace'ı nasıl kullanırım?
- 23. Değişmez altkümelerin değiştirilmesi için mevcut Javabean desteği
- 24. Paralaks için solma yüksekliğinin değiştirilmesi CollapsingToolbarLayout
- 25. Yöntemlerin ve çoklu sınıfların kullanıldığı kartların destesi
- 26. std :: chrono işlevlerinde kullanılmak üzere özel bir saat nasıl oluşturulur?
- 27. ActiveRecord :: RecordNotFound için Test
- 28. Sınıfsız Modüllerde örnek yöntemlerin amacı nedir?
- 29. İlkbahar Web Akışı'nda doğrulamadan önceki yöntemlerin değerlendirilmesi
- 30. C# içinde yöntemlerin bir listesini saklama C#
Neden olmasın? Test etmeden önce bir şeyi değiştiriyorsunuz, bunun nedenini göremiyorum? – Nanne
Neredeyse kesinlikle iyi bir fikir değil; Bir sınıfın içsel yöntemlerini doğrudan test ediyorsanız, bunları ayrı bir sınıfa dönüştürmeyi düşünmelisiniz. –
Bunu, özel bir yöntemin birim sınama ortamında bulunmayan bazı kaynakları döndürdüğü durumlarda yaptım ve bunu çağıran başka (özel olmayan) bir yöntemi test etmek istiyorum. Korumalı hale getirerek geçersiz kılabilir, böylece kullanılabilir kaynak yerine biraz saplama/alay döndürür. Bu, bir birim testi anlamına geldi ve daha sonra feasbl oldu ve ben bunun bir başka yolunu bulamadım, ama idealden daha az. –