[JAVA] Remplacer la méthode protégée par une classe et un stub anonymes

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

Remplacer la méthode protégée par une classe et un stub anonymes
Introduction aux algorithmes avec la méthode java-Shakutori
[Java] Résumez comment comparer avec la méthode equals
Classe anonyme (classe anonyme)
Méthode de classe
Classe anonyme (visant à introduire l'API de flux)
Comment éviter les exceptions avec la méthode Equals de Java
Méthode de recherche
Classe anonyme Java
Je veux appeler une méthode d'une autre classe
Comment créer et exécuter des objets de classe Méthode, Proc, Méthode