Ich habe eine Klasse:Wie testet man das private Feld auf den bereitgestellten Wert mit der public-Methode in JUnit?
public class MyEncryptor {
private StringEncryptor stringEncryptor; // this is an interface ref
public void setStringEncryptor(StringEncryptor stringEncryptorImpl) {
if(condition){
this.stringEncryptor = stringEncryptorImpl;
}
}
}
Bei der Prüfung in JUnit für Verfahren setStringEncryptor
, ich will stringEncryptor
wenn Instanz testen Wert eingestellt ist, was ich in Parameter als Implementierung geliefert haben? oder ich gehe in die falsche Richtung, um diese Methode zu testen?
Unten ist mein gescheiterter Versuch in einer JUnit-Testmethode:
MyEncryptor decryptor = new MyEncryptor();
StringEncryptor spbe = new StandardPBEStringEncryptor();
decryptor.setStringEncryptor(spbe);
Field f = MyEncryptor .class.getDeclaredField("stringEncryptor");
f.setAccessible(true);
Assert.assertSame(f, spbe);
Ich mag, dass stringEnctyptor
testen gesetzt in junit
Warum möchten Sie den Setter testen?Die wichtigste Regel ist das Testen des Verhaltens. Nehmen Sie beispielsweise an, dass StringEncryptor über eine öffentliche encrypt() -Methode verfügt. Ihr Komponententest sollte bestätigen, dass die Methode encrypt() korrekt verschlüsselt ist. –
Es ist nicht der Setter, es hat mehr Logik im Inneren, ich habe gerade den Code verdünnt, um das Szenario zu simulieren – Ajeetkumar