[JAVA] Deaktivieren Sie den statischen Initialisierer in 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. Verwenden Sie die WhiteBox von PowerMock
  7. Deaktivieren Sie den statischen Initialisierer in PowerMock ← Jetzt hier

Überblick

PowerMock bietet die Annotation "@ SuppressStaticInitializationFor", um den statischen Initialisierer zu deaktivieren.

Anwendungsbeispiel

Spottklasse

Wenn die Klasse geladen wird, füllt der statische Initialisierer das Feld mit der Zeichenfolge "Wert".

Hier haben wir eine Richtermethode vorbereitet, die true zurückgibt, wenn das Feld auf "value" gesetzt ist, andernfalls false.

SampleEm.java


public class SampleEm {
	
	private static String field = null;
	
	static {
		field = "value";
	}
	
	public boolean judge() {
		return "value".equals(field);
	}
}

Testklasse

Um PowerMock mit JUnit zu verwenden, geben Sie PowerMockRunner für "@ RunWith" an.

Geben Sie für "@ PrepareForTest" die zu verspottende Klasse an.

Ich gebe auch eine Klasse an, die in "@ SuppressStaticInitializationFor" verspottet werden soll, aber beachten Sie, dass es sich nicht um "@SuppressStaticInitializationFor (SampleEm.class)" handelt.

@RunWith(PowerMockRunner.class)
@PrepareForTest(SampleEm.class)
@SuppressStaticInitializationFor("jp.co.sample_powermock.staticinitializer.SampleEm")
public class SampleEmTest {

	@Test
	public void test() throws Exception {
		//Lauf
		SampleEm em = new SampleEm();
		boolean result = em.judge();

		//Überprüfen Sie das Ergebnis
		assertFalse(result);
	}
}

Wenn ich den Test ausführe, ist diese JUnit erfolgreich, da das Feld aufgrund der Deaktivierung des statischen Initialisierers nicht auf "Wert" gesetzt ist.

Recommended Posts

Deaktivieren Sie den statischen Initialisierer in PowerMock
Deaktivieren Sie Turbolinks in Schienen
Deaktivieren Sie IPv6 in CentOS8
Verspotten Sie statische Methoden mit PowerMock
Verspotten Sie statische Methoden in Mockito 3.4