SORU
11 Mayıs 2010, Salı


Kötü uygulama Birim testi Yansıma kullanımı kolay mı?

Son yıllarda hep Java, Yansıma yaygın Birim test sırasında kullanılan düşündüm. Kontrol edilmesi gereken yöntem/değişken bazı özel olduğundan, bir şekilde onların değerlerini okumak için gereklidir. Ben Yansıma API de bu amaçla kullanılan düşünmüşümdür.

Geçen hafta bazı paketleri test ve bu nedenle bazı JUnit testleri yazmak zorunda kaldım. Her zaman olduğu gibi Yansıma özel alanları ve yöntemlerine erişmek için kullanılır. Ama kod ile gerçekten mutlu değildi kontrol ve Yansıma API gibi kullanmak için bir anlamı olmadığını söyleyen müdürüm"". hack Bunun yerine üretim kodu görünürlük modifiy önerdi.

Gerçekten kötü pratiğe Yansıması kullanımı kolay mı? Gerçekten inanamıyorum

Edit: tüm testleri ayrı bir paket test (yani korumalı visibilty örneğin kullanarak olası bir çözüm de değildi) denir bunun gerekli olduğunu anlatmam gerekirdi

CEVAP
11 Mayıs 2010, Salı


IMHO Yansıma gerçekten son çare olmalı, birim test eski kod özel bir durum ya da değiştiremezsin bir API için ayrılmış. Eğer kendi kodunuzu test, Yansıma kullanmak gerekir aslında tasarım Yansıma başvurmak yerine bunu düzeltmelisin yani test edilebilir, anlamına gelir.

Eğer birim testleri özel üyelere erişmek için gerekiyorsa, genellikle söz konusu sınıf arayüzü ve/veya uygun olmayan çok fazla yapmaya çalışıyor demektir. Yani ya kendi arayüzü gözden geçirilmeli, ya da bazı kod bu sorunlu yöntemleri / alan set halka açık hale getirilmesi için ayrı bir sınıf, içine ayıkladı.

Hangi kod, zor anlamak ve korumak için olması dışında, genel sonuçlar Yansıma kullanarak aynı zamanda daha kırılgan olduğunu unutmayın. Normal durumda derleyici tarafından tespit edileceği için hangi hataları bütün bir set var, ama Yansıma ile çalışma zamanı istisnaları olarak çıkabilirler.

Güncelleme:@tackline belirtildiği gibi, bu sadece kendi test kod içinde Yansıma kullanarak, test çerçeve değil iç ilgilidir. JUnit (ve muhtemelen tüm diğer benzer çerçeveler) yansıma tanımlamak için kullanır ve test yöntemleri - bu yansıma haklı ve sınırlı bir kullanım Ara. Ya da Yansıma kullanmadan aynı özellik ve kolaylık sağlamak için zor imkansız olurdu. OTOH veya kendi test kodumuzu karmaşık uzlaşma değil, tamamen çerçeve uygulama içinde saklanmış.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • SRI International

    SRI Internat

    30 NİSAN 2008
  • UnboxTechnology

    UnboxTechnol

    20 Ocak 2011