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

  • joshsnice

    joshsnice

    28 Kasım 2006
  • Rayone GB

    Rayone GB

    14 Temmuz 2007
  • VitalyzdTv

    VitalyzdTv

    7 AĞUSTOS 2011