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

  • 8lacKy

    8lacKy

    30 Mart 2009
  • maxman.tv

    maxman.tv

    29 EKİM 2013
  • pucksz

    pucksz

    24 Mart 2006