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

  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007
  • TechShowsYou

    TechShowsYou

    3 Mart 2011
  • VJ VIMANA

    VJ VIMANA

    3 Mayıs 2007