Ich lasse es hier für persönliche Studienzwecke! Ich weiß nicht, ob es hilfreich sein wird.
: Denken: Ich habe in Zukunft Probleme mit JUnit : Anfänger: Leute, die neu bei JUnit sind : alarm_clock: JUnit ist schon lange nicht mehr da : enttäuscht_relieved: Was ist die Verspottungsmethode? Menschen
(1) Aufrufen einer Methode (mit Beispielquelle) (2) Verspotten (mit Beispielquelle) (3) Die Beziehung zwischen der Testklasse und der Testzielklasse (mit Bild)
Es ist eine lange Zeit, aber wenn Sie der Reihenfolge folgen, können Sie (1) und (2) meistern?
·Umgebung ・ (1) Aufrufen einer Methode (mit Beispielquelle) ・ (2) Verspotten (mit Beispielquelle) ・ (3) Beziehung zwischen Testklasse und Testzielklasse (mit Bild) ・ Schauen wir uns die Testzielklasse und die gesamte Testklasse mit Erläuterungen an. ·Schließlich
・ JUnit4 ・ Jmockit ・ Sonnenfinsternis ・ Java SE5 (verifiziert durch SE7,8)
Hier Wurde verwiesen
▼ Code, der die Methode aufruft
Method method =【Name der Klasse】.class.getDeclaredMethod("[Methodenname]",[Argumenttyp].class);
method.setAccessible(true);
method.invoke([Instanzname],【Streit】);
◆ Erklärung
Zweite Zeile: Stellen Sie fest, ob auf die Methode zugegriffen werden kann. Wenn dies zutrifft, können sowohl geschützte als auch private von außen aufgerufen und getestet werden.
Zeile 3: Die aufgerufene Methode wird ausgeführt. Ich werde das Argument übergeben, dass die Instanz hier erstellt wurde. Dies kann für die grundlegende Ausführung verwendet werden, aber wenn dies nicht möglich ist **, gibt es nicht genügend Informationen zum Aufrufen ** oder ** es fehlt in den meisten Fällen beim Angerufenen **.
Beispiel)
//Instanz der zu testenden Klasse ... (A)
Test sample = new Test();
//Argumenteinstellung ... (B)
String moji = "Roboter vom Typ Katze";
int suuji = 2112903;
//Methodenausführung ... (C)
Method method = Test.class.getDeclaredMethod("testMethod", String.class, int.class);
method.setAccessible(true);
method.invoke(sample, moji, suuji);
◆ Erklärung (A): Instanziierung der zu testenden Klasse. Dieser Instanzname wird am Ende von (C) verwendet.
(B): Definieren Sie hier die Argumente, wenn Sie die Methode ausführen! Wird am unteren Rand von (C) verwendet.
(C): Da es diesmal zwei Argumente gibt, werden in der ersten Zeile zwei von "String.class" und "int.class" beschrieben. Hier ** füge so viele Argumente hinzu **! Natürlich ** nicht beschrieben für Methoden ohne Argumente **! Beschreiben Sie die Reihenfolge in der Reihenfolge der Argumente der Methode, die Sie testen möchten.
▼ Code zum Verspotten
new MockUp<【Name der Klasse】>(){
@Mock
[Solides Schreiben der Methode, die Sie hier verspotten möchten]{
return [Die hier aufgeführten Artikel werden zurückgegeben];
* Wenn es nichtig ist, gibt es keine Rückgabe.
}
};
◆ Erklärung Anstatt zu erklären, kopieren und fügen Sie es bitte so ein, wie es ist, und passen Sie das Innere von [] an. Sehen wir uns ein Beispiel an!
Beispiel)
new MockUp<sample>(){
@Mock
public String testMethod(String moji, int suuji) {
String result = "Hallo, das ist mein Doraemon";
return result ;
}
};
◆ Erklärung
Eh, warum muss ich alle Argumente in der Testklasse vorbereiten? !! Sie können den Wert erhalten, weil Sie die Methode aufrufen!
Ich hatte große Probleme, darüber nachzudenken, also machte ich ein Diagramm und verstand es. (Es tut mir leid, wenn es schwer zu verstehen ist, weil es für persönliche Memozwecke ist !!)
▼ Beziehung, an die ich zuerst gedacht habe
Ich dachte, ich rufe die Testzielklasse aus der Testklasse auf.
▼ Eigentlich eine solche Beziehung
Es scheint ein Bild des Festhaltens am Rücken zu sein. ** Es ist an der Rückseite angebracht = Ich muss den Wert übergeben ** Es kam reibungslos an.
Lassen Sie uns JUnit in der Kulisse dieses wunderbaren nationalen Anime Doraemon lernen. (Wenn Sie so etwas mit Ihrer Lieblingssache machen, wird es unerwartet gut.)
[Zielklasse testen] ・Nobita.java ・Doraemon.java
[Testklasse] ・NobitaTest.java ・DoraemonTest.java
Nobita.java
package nobita;
import doraemon.Doraemon;
public class Nobita {
public void NobitaHelp() {
Doraemon dora = new Doraemon();
int point = 0;
System.out.println("Nobita "Ich habe 0 Punkte! Irgendwie, Doraemon ~"");
String GetTool = dora.help(point);
if (GetTool != null) {
System.out.println("Nobita "Hmm! Ich werde motiviert!"");
} else {
System.out.println("Nobita "Suyaa ..."");
System.out.println("Doraemon "Steh auf!"");
}
}
}
Doraemon.java
package doraemon;
public class doraemon {
public String help(int point) {
String tool = null;
if (point == 0) {
System.out.println("Doraemon "Nun, du bist ..."");
tool = secretTool();
} else {
System.out.println("Doraemon "Du hast dein Bestes gegeben! Ich habe es überprüft, Nobita-kun."");
return null;
}
return tool;
}
public String secretTool() {
String secretTool = "Makeover Fan";
System.out.println("Doraemon "" + secretTool + "!」");
return secretTool;
}
}
NobitaTest.java
package nobita;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import doraemon.doraemon;
import mockit.Mock;
import mockit.MockUp;
public class NobitaTest {
/*****************************************
*Testen der NobitaHelp-Methode
*Würfe werden automatisch importiert, das ist mir jetzt egal!
******************************************/
@Test
public void test001_NobitaHelp() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Nobita nobi = new Nobita();
new MockUp<doraemon>(){
@Mock
public String help(int point) {
// Nobita.Kommentieren Sie den obigen Prozess aus, wenn Sie einen Test ausführen, der mit der if-Anweisung von Java ausgeführt wird.
String doraemonAction = "Makeover Fan";
// Nobita.Kommentieren Sie den folgenden Prozess aus, wenn Sie den else-Test mit der Java-if-Anweisung ausführen.
//String doraemonAction = null;
return doraemonAction;
}
};
Method method = Nobita.class.getDeclaredMethod("NobitaHelp");
method.setAccessible(true);
method.invoke(nobi);
System.out.println("-----Testende-----");
}
}
Wenn Sie JUnit ausführen,
** Nobita "Ich habe 0 Punkte! Tun Sie etwas dagegen?" ** ** Nobita "Hmm! Ich werde motiviert!" ** ** ----- Testende ----- **
Wenn Sie so zurückkommen, sind Sie erfolgreich!
DoraemonTest.java
package doraemon;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@FixMethodOrder (MethodSorters.NAME_ASCENDING)
//↑ Dieser eine Satz wird in der Reihenfolge des Namens der in dieser Testklasse beschriebenen Methode und der Reihenfolge der jüngsten Zahl getestet. Wenn dies nicht angegeben ist, werden die Tests separat ausgeführt.
public class DoraemonTest {
/*****************************************
*Hilfemethoden-Test
*Würfe werden automatisch importiert, das ist mir jetzt egal!
******************************************/
@Test
public void test001_Help() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Doraemon dora = new Doraemon();
int point = 0;
Method method = Doraemon.class.getDeclaredMethod("help", int.class);
method.setAccessible(true);
method.invoke(dora, point);
System.out.println("-----Testende-----");
}
/*****************************************
*Testen der SecretTool-Methode
*Würfe werden automatisch importiert, das ist mir jetzt egal!
******************************************/
@Test
public void test002_SecretTool() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Doraemon dora = new Doraemon();
Method method = Doraemon.class.getDeclaredMethod("secretTool");
method.setAccessible(true);
method.invoke(dora);
System.out.println("-----Testende-----");
}
}
Wenn Sie JUnit ausführen,
** Doraemon "Nun, du bist ..." ** ** Doraemon "Transformation Uchiwa!" ** ** ----- Testende ----- ** ** Doraemon "Transformation Uchiwa!" ** ** ----- Testende ----- **
Es ist ein Erfolg!
JUnit schreitet schnell voran, wenn Sie lernen, wie Sie Methoden ausführen und verspotten. (Geschichte erleben)
Dieser Artikel ist für diejenigen gedacht, die in Schwierigkeiten sind, weil sie in Zukunft JUnit machen werden. Lol
Recommended Posts