PowerMock fournit l'annotation @ SuppressStaticInitializationFor
pour désactiver l'initialiseur statique.
Lorsque la classe est chargée, l'initialiseur statique remplit le champ avec la chaîne "valeur".
Ici, nous avons préparé une méthode de jugement qui retourne true si le champ est défini sur "value" et false dans le cas contraire.
SampleEm.java
public class SampleEm {
private static String field = null;
static {
field = "value";
}
public boolean judge() {
return "value".equals(field);
}
}
Pour utiliser PowerMock avec JUnit, spécifiez PowerMockRunner pour @ RunWith
.
Pour @ PrepareForTest
, spécifiez la classe à simuler.
Je spécifie également une classe à simuler dans @ SuppressStaticInitializationFor
, mais sachez que ce n'est pas @SuppressStaticInitializationFor (SampleEm.class)
.
@RunWith(PowerMockRunner.class)
@PrepareForTest(SampleEm.class)
@SuppressStaticInitializationFor("jp.co.sample_powermock.staticinitializer.SampleEm")
public class SampleEmTest {
@Test
public void test() throws Exception {
//Courir
SampleEm em = new SampleEm();
boolean result = em.judge();
//Vérifiez le résultat
assertFalse(result);
}
}
Lorsque j'exécute le test, ce JUnit réussit car le champ n'est pas défini sur "valeur" en raison de la désactivation de l'initialiseur statique.