[JAVA] Ausführen einer Methode und Verspotten mit JUnit

bitte beachten Sie!

Ich lasse es hier für persönliche Studienzwecke! Ich weiß nicht, ob es hilfreich sein wird.

Ziel

: 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

Was Sie vom Lesen dieses Artikels erwarten können

(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?

Inhaltsverzeichnis

·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

Umgebung

・ JUnit4 ・ Jmockit ・ Sonnenfinsternis ・ Java SE5 (verifiziert durch SE7,8)

Automatische Generierung der Testklasse

Hier Wurde verwiesen

(1) Aufrufen einer Methode (mit Beispielquelle)

▼ Code, der die Methode aufruft

Method method =【Name der Klasse】.class.getDeclaredMethod("[Methodenname]",[Argumenttyp].class);
method.setAccessible(true);
method.invoke([Instanzname],【Streit】);

◆ Erklärung

  1. Zeile: Beschreiben Sie die Klasse, den Namen der auszuführenden Methode und das Argument (falls vorhanden). Schreiben Sie für das Argument den Typ des Arguments wie "** String.class " oder " int.class **". Was Sie schreiben, ist ** Argumenttyp **!

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.

(2) Verspotten (mit Beispielquelle)

▼ 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

  1. Zeile: Beschreiben Sie die Testklasse in <> Zeile 2: @Mock ist fertig! Also mach dir keine Sorgen Zeile 3: ** Notieren Sie sich hier die Methode, die Sie testen möchten! ** Ich werde es später erklären! Zeilen 4 und 5: Hier entscheidet der Mock, wer testet, was er zurückgeben möchte. In diesem Fall geben wir den Wert, der von der testMethod-Methode zurückgegeben wird, mit "return" zurück! Und das.

(3) Beziehung zwischen Testklasse und Testzielklasse (mit Bild)

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 JUnit理解001.PNG

Ich dachte, ich rufe die Testzielklasse aus der Testklasse auf.

▼ Eigentlich eine solche Beziehung JUnit理解002.PNG

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.

Schauen wir uns die Testzielklasse und die gesamte Testklasse mit Erläuterungen 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;
	}
}

▼ Zunächst der Testcode von Nobita.java!

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!

▼ Als nächstes der Testcode von Doraemon.java

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!

Schließlich

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

Ausführen einer Methode und Verspotten mit JUnit
Aufrufen von Klassen und Methoden
So führen Sie einen Vertrag mit web3j aus
Verwendung von Teilzeichenfolgen und Substratmethoden
So geben Sie Excel und PDF mit Excella aus
Wie man Stimme oder Musik mit Javascript spielt
[Ethereum] So führen Sie einen Vertrag mit web3j-Teil 2 aus
So greifen Sie auf Java Private-Methoden und -Felder zu
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Erstellen und Ausführen von Methoden-, Proc- und Methodenklassenobjekten
Verwendung von JUnit (Anfänger)
Wie schreibe ich Junit 5 organisiert
[Erstellen] Verwendung von JUnit
So autorisieren Sie mit graphql-ruby
Testen des Einschlusses von Bildern bei Verwendung von ActiveStorage und Faker
So trennen Sie Wörter in Namen in Klassen, Methoden und Variablen
[Rails] Verschiedene Unterschiede zwischen redirect_to und Render-Methode und Ausgabemethode der Render-Methode
Festlegen und Beschreiben von Umgebungsvariablen mit Rails zsh
Wie man einige Methoden der zu testenden Klasse verspottet
So verbinden Sie eine Tabelle ohne DBFlute und SQL
So führen Sie JUnit im Batch aus und erhalten Abdeckung
Verwendung von StringBurrer und Arrays.toString.
So führen Sie JUnit in Eclipse aus
Verwendung von EventBus3 und ThreadMode
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
So verbinden Sie Heroku und Sequel
So konvertieren Sie LocalDate und Timestamp
Verwendung von Klassenmethoden [Java]
Wie man Ruby's irb ausführt (interaktiver Ruby)
So erstellen Sie CloudStack mit Docker
Wie POST JSON in Java-Methode mit OkHttp3 und Methode mit HttpUrlConnection-
[Rails] So laden Sie Bilder mit Carrierwave und Fog-Aws in AWS S3 hoch
[Rails] So laden Sie Bilder mit refile und refile-s3 in AWS S3 hoch
So sortieren Sie eine Liste mit Comparator
So testen Sie eine private Methode und verspotten sie teilweise in Java
Verwendung von OrientJS und OrientDB zusammen
[Android] So aktivieren / deaktivieren Sie das Benachrichtigungsfeld mit StatusBarManager
Wie kann ich mit NUXTJS Official S3 und CloudFront für AWS bereitstellen? Mit Docker-Compose
[Rails] So laden Sie Bilder mit Carrierwave hoch
So filtern Sie den JUnit-Test in Gradle
Wie man eine hybride Suche mit morphologischer Analyse und Ngram mit Solr realisiert
So testen Sie eine private Methode, die ein Array- oder Argument variabler Länge in JUnit verwendet
[Java] So berechnen Sie das Alter mit LocalDate
[Android] Übergeben von Bildern und Empfangen von Rückrufen beim Teilen mit ShareCompat
[Java] Wie man Dateien ausgibt und schreibt!
So richten Sie kapt ein und verwenden es
So beheben Sie das Systemdatum in JUnit
Wie man SquashTM baut und wie man Japanisch unterstützt
Wie man die Zehner und Einsen findet
Ausgabe mit Methoden und Konstanten Lernnotiz
[Einfach] So aktualisieren Sie Ruby und Bundler
So testen Sie den privaten Bereich mit JUnit
[Swift5] So implementieren Sie Animationen mit "lottie-ios"
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen