[JAVA] Versuchen Sie es mit der WhiteBox von PowerMock

Inhaltsverzeichnis

  1. Verfahren zum Erstellen einer Umgebung für die Verwendung von PowerMock
  2. Mock and Spy in PowerMock
  3. Statische Methoden mit PowerMock verspotten
  4. Verspotten Sie den Konstruktor mit PowerMock
  5. Private Methoden mit PowerMock verspotten
  6. Versuchen Sie es mit der WhiteBox von PowerMock ← Jetzt hier
  7. Statischen Initialisierer in PowerMock deaktivieren

Überblick

In Java können Sie eine Funktion namens Reflection verwenden, um die Sichtbarkeit zu manipulieren, um den Wert eines privaten Felds abzurufen oder auf eine private Methode zuzugreifen.

PowerMock bietet diese Funktionen in der WhiteBox-Klasse. (Reflexion wird intern verwendet.)

Zielklasse

SampleEm.java


public class SampleEm {

	private String field = null;

	public SampleEm(String filed) {
		this.setField(filed);
	}

	public String getField() {
		return field;
	}

	private void setField(String filed) {
		this.field = filed;
	}
}

Anwendungsbeispiel

Holen Sie sich den Wert eines privaten Feldes

getInternalState (Instanz, Feldname Zeichenfolge)

@Test
public void test_getInternalState() throws Exception {
	//Vorbereitung
	SampleEm em = new SampleEm("value");
	//Holen Sie sich den Wert eines privaten Feldes
	String field = Whitebox.getInternalState(em, "field");
}

Legen Sie im privaten Feld einen Wert fest

setInternalState (Instanz, Feldname Zeichenfolge, Set-Wert)

@Test
public void test_setInternalState() throws Exception {
	//Vorbereitung
	SampleEm em = new SampleEm("value");
	//Legen Sie im privaten Feld einen Wert fest
	Whitebox.setInternalState(em, "field", "newValue");
}

Rufen Sie eine private Methode auf

invokeMethod (Instanz, Methodenname Zeichenfolge, Argument, ...)

@Test
public void test_invokeMethod() throws Exception {
	//Vorbereitung
	SampleEm em = new SampleEm("value");
	//Rufen Sie eine private Methode auf
	Whitebox.invokeMethod(em, "setField", "newValue");
}

Verschiedene andere Methoden werden bereitgestellt.

Sie können Ihren eigenen Code verwenden, um mithilfe von Reflection auf private Felder / Methoden zuzugreifen. Ich denke jedoch, dass der Vorteil der Verwendung von Whitebox darin besteht, dass Sie Ihren Testcode einfach halten können.

Recommended Posts

Versuchen Sie es mit der WhiteBox von PowerMock
Versuchen Sie es mit libGDX
Versuchen Sie es mit Maven
Versuchen Sie es mit powermock-mockito2-2.0.2
Versuchen Sie es mit GraalVM
Versuchen Sie es mit jmockit 1.48
Versuchen Sie es mit SwiftLint
Versuchen Sie es mit Log4j 2.0
Versuchen Sie es mit dem Axon Framework
Versuchen Sie es mit der REST-API von JobScheduler
Versuchen Sie es mit der Methode java.lang.Math
Versuchen Sie es mit Talend Teil 2
Versuchen Sie es mit Talend Teil 1
Versuchen Sie es mit der F # -Liste
Versuchen Sie es mit der Methode each_with_index
Versuchen Sie es mit Spring JDBC
Versuchen Sie es mit RocksDB mit Java
Versuchen Sie es mit GloVe mit Deeplearning4j
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie es mit Cocoa von Ruby
Versuchen Sie es mit IntelliJ IDEA, da Sie dies nur einmal tun müssen
Versuchen Sie es mit Spring Boot Security
[Rails] Versuchen Sie, Faradays Middleware zu verwenden
[Verarbeitung] Versuchen Sie es mit GT Force.
[Vollständige Programmierung] §2 Versuchen Sie es mit Ruby
Probieren Sie Redmine auf dem Mac Docker aus
Versuchen Sie es mit Redis mit Java (jar)
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Versuchen Sie es mit dem Nachrichtensystem Pulsar
Versuchen Sie es mit der IBM Java-Methodenverfolgung
Versuchen Sie es mit dem Java SDK von Hyperledger Iroha
[Java] Wo haben Sie versucht, Java zu verwenden?
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Versuchen Sie, || anstelle des ternären Operators zu verwenden
Versuchen Sie es mit der Stream-API in Java
Java lernen Versuchen Sie es mit einem Scanner oder einer Karte
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie es mit Spring Boot mit VS-Code
Versuchen Sie es mit Reladomos MT Loader (Multi-Threaded Matcher Loader).
Versuchen Sie es mit der REST-API von JobScheduler - Java RestClient-Implementierung -
Versuchen Sie es mit der Emotion API von Android
Versuchen Sie es mit der Wii-Fernbedienung in Java
Versuchen Sie es mit simple_form / edit sogar untergeordneten Modellen
Versuchen Sie, einen GraphQL-Server mit grahpql-java-tools (+ kotlin) zu implementieren.