[JAVA] Überschreiben Sie die geschützte Methode mit anonymer Klasse und Stub

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

Überschreiben Sie die geschützte Methode mit anonymer Klasse und Stub
Einführung in Algorithmen mit der Java-Shakutori-Methode
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
Anonyme Klasse (anonyme Klasse)
Klassenmethode
Anonyme Klasse (mit dem Ziel, Stream-API einzuführen)
So vermeiden Sie Ausnahmen mit der Java-Methode equals
Suchmethode
Anonyme Java-Klasse
Ich möchte eine Methode einer anderen Klasse aufrufen
Erstellen und Ausführen von Methoden-, Proc- und Methodenklassenobjekten