SORU
29 AĞUSTOS 2008, Cuma


Nasıl özel yöntemleri, alanları veya iç sınıflar bir sınıfı test etmek için

Nasıl JUnit iç özel yöntemleri, alanları veya iç içe geçmiş sınıflar bir sınıfı test etmek için kullanırım? Sadece kötü bir test edebilmek için bir yöntem için bir erişim değiştiricisi değiştirmek gibi görünüyor.

CEVAP
29 AĞUSTOS 2008, Cuma


Eski bir uygulama biraz ve yöntemlerin görünürlüğünü değiştirmek için izin değilseniz, özel yöntemler test etmenin en iyi yolu reflection kullanmaktır.

Dahili/yardımcıları private ve 3 ** değişkenlerini ayarlamak gibi private private static yöntemlerini çağırmak için kullanıyoruz. Aşağıdaki desenleri hemen hemen hiçbir şey özel yöntemleri ve alanları ile ilgili izin verir. Elbette yansıma yoluyla private static final değişkenleri değiştirebilirsiniz.

Method method = targetClass.getDeclaredMethod(methodName, argClasses);
method.setAccessible(true);
return method.invoke(targetObject, argObjects);

Ve alanlar için

Field field = targetClass.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, value);

Notlar:
1. targetClass.getDeclaredMethod(methodName, argClasses) private yöntemleri içine bakmak sağlar. Aynı şey için geçerlidir getDeclaredField.
2. setAccessible(true) etrafında erler ile oynamak için gereklidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Candyrat Records

    Candyrat Rec

    10 Mayıs 2006
  • Friday Night Cranks

    Friday Night

    27 Mayıs 2007
  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006