Spöttische Verhalten setzt nach jedem test mit PowerMock

Schreibe ich unit-tests unter Verwendung von PowerMock, spöttische Verhalten einige util-Klassen. Definition von Verhalten, sobald für die test-Klasse (die mit @BeforeClass annotation) Ursachen:

  • erste test, der Aufruf zur Rückkehr verspottet Wert
  • zweiten test Aufruf zur Rückkehr real Rückgabewert der Methode

Beispielcode:

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest( {A.class, B.class})
public class TestMockedMethods {

private static B b;

@BeforeClass
public static void setUp() {
    PowerMockito.mockStatic(A.class);
    PowerMockito.when(A.getVal()).thenReturn("X");

    b = PowerMockito.mock(B.class);
    PowerMockito.when(b.getVal()).thenReturn("Y");
}

@Test
public void test1() { //PASS
    Assert.assertEquals("X", A.getVal());
    Assert.assertEquals("Y", b.getVal());
}

@Test
public void test2() { //FAIL
    Assert.assertEquals("X", A.getVal()); //actual="A"
    Assert.assertEquals("Y", b.getVal()); //actual="B"
}

}
class A {
  static String getVal() {
    return "A";
  }
}
class B {
  String getVal() {
    return "B";
  }
}

Irgendwelche Ideen, warum der zweite test versagt?

Schreibe einen Kommentar