Im Komponententest ruft die Methode, die ich testen möchte, die geschützte Methode auf, aber die geschützte Methode ist schwer zu entschlüsseln (altes Erbe) und die Implementierung des Testfalls ist schwierig.
Daher kam mir die Idee, die geschützte Methode mit einer anonymen Klasse zu überschreiben, um sie zu einem Stub zu machen.
JUnit verwendet 4.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
Target.java
public class Target {
//Die Methode, die Sie testen möchten
public int wantTesting(int x) {
return getNum(x);
}
//Geschützte Methode, die von der zu testenden Methode aufgerufen wird
protected int getNum(int x) {
return x + 100;
}
}
TargetTest.java
import org.junit.Assert;
import org.junit.Test;
public class TargetTest {
@Test
public void testWantTesting() {
Target target = new Target();
Assert.assertEquals(101, target.wantTesting(1));
Target target2 = new Target() {
@Override
protected int getNum(int x) {
return 9999;
}
};
Assert.assertEquals(9999, target2.wantTesting(1));
}
}
Recommended Posts