Dans le test unitaire, la méthode que je souhaite tester appelle la méthode protégée, mais la méthode protégée est difficile à déchiffrer (héritage ancien) et la mise en œuvre du cas de test est difficile.
J'ai donc eu l'idée de remplacer la méthode protégée par une classe anonyme pour en faire un stub.
JUnit utilisé 4.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
Target.java
public class Target {
//La méthode que vous souhaitez tester
public int wantTesting(int x) {
return getNum(x);
}
//Méthode protégée appelée par la méthode que vous souhaitez tester
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