[JAVA] Testen Sie private Methoden in JUnit

Hintergrund

Als ich mir den heute in JUnit geschriebenen Testcode ansah, wurde der Test für die private Methode nicht geschrieben. Ich habe ein Beispiel erstellt, das eine private Methode aufruft, und dachte, ich würde es veröffentlichen.

Nachtrag Einzelheiten finden Sie in @ Kilisames Kommentar, aber es ist kein Artikel, der besagt, dass ich ihn getestet habe, weil ich vergessen habe, privat zu testen. Es ist schwer zu sagen, dass der öffentliche Test des Anrufers nicht durchgeführt werden kann ... (Ich möchte, dass Sie das verstehen), also habe ich ihn geschrieben, weil ich zumindest einen privaten Test machen wollte.

Code

import static org.junit.Assert.*;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.junit.Test;

/**Beispielklasse*/
public class private_Test {

	public class Sample{
		private int fuge(int i) {
			return i;
		}
	}
	
	@Test
	public void test() {
		
		Sample sample = new Sample();
		try {
			Method method = Sample.class.getDeclaredMethod("fuge", int.class);
			method.setAccessible(true);
			int rtn = (int)method.invoke(sample, 2);
			assertEquals(2,rtn);
			
		} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
			//TODO automatisch generierter Fangblock
			e.printStackTrace();
		}
	}

}

Sie können die Methode mit der Methode getDeclaredMethod () abrufen, den externen Zugriff mit setAccessible (true) zulassen und mit method.invoke () ausführen.

Recommended Posts

Testen Sie private Methoden in JUnit
Testen Sie private Methoden in JUnit
[Java] Testen Sie private Methoden mit JUnit
Informationen zu Validierungsmethoden in JUnit
So testen Sie eine private Methode, die ein Array- oder Argument variabler Länge in JUnit verwendet
Wenn Sie die Testabdeckung privater Methoden in JUnit erfüllen möchten
JUnit-Testbericht in Maven ausgeben
Beachten Sie beim Testen privater Methoden in JUnit
So filtern Sie den JUnit-Test in Gradle
Steuern Sie die Testreihenfolge in Junit4 mit einem Aufzählungstyp
Refactoring in JUnit
So testen Sie den privaten Bereich mit JUnit
JUnit 5: Wie man Testfälle in enum schreibt
Visualisieren Sie die in TestNG ausgeführte Testmethode im Listener
Mischen Sie Testfälle mit JUnit 5 und Standardmethoden
JUnit Teststart versuchen Sie etwas
Machen Sie einen Unit-Test mit Junit.
Rufen Sie den Namen des Testfalls in der JUnit-Testklasse ab
Implementieren Sie Test Double in JUnit, ohne externe Bibliotheken zu verwenden
[Java] JUnit4-Testfallbeispiel
Testen Sie die Web-API mit junit
Hilfsmethoden im Gerät verfügbar
Überprüfen Sie die private Methode der Java9-Schnittstelle
[JUnit] Testen Sie die ausgelöste Ausnahme
Verspotten Sie statische Methoden in Mockito 3.4
[Spring Boot] Bis @Autowired in der Testklasse [JUnit5] ausgeführt wird
Implementieren Sie einen tabellengesteuerten Test in Java 14
Über häufig verwendete Methoden in der Entwicklung
So führen Sie JUnit in Eclipse aus
Schreiben Sie den Testcode mit Spring Boot
Unterschiede in den Split-Methoden von StringUtils
Test-API, die häufig in AssertJ verwendet wird
Häufig verwendete Methoden in Active Record
Was sind die Regeln in JUnit?
Testen Sie den Spring Framework Controller mit Junit
Ruby-Methoden, die häufig in Rails verwendet werden
So testen Sie eine private Methode und verspotten sie teilweise in Java