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
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çerlidirgetDeclaredField
.
2.setAccessible(true)
etrafında erler ile oynamak için gereklidir.
Rspec, Raylar: nasıl denetleyicileri ö...
Nasıl bir java sınıfı çalışma zamanınd...
Nasıl terminalden Curl ile JSON veri g...
Nasıl PHP ilişkisel Dizi veya sıralı o...
Bu nasıl bir dizi kontrol etmek için y...