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

  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • William Sledd

    William Sled

    24 EYLÜL 2006