PowerMock
PowerMock ist ein Java-Framework, zum Erstellen von Mock-Objekten für Unit-Tests.[3] Es läuft als Erweiterung anderer Mocking-Frameworks wie Mockito oder Easymock und erweitert deren Funktionsumfang um die Fähigkeit, bestimmte Sprachaspekte wie statische Methoden oder Konstruktoren zu mocken. PowerMock verwendet Techniken wie einen eigenen Klassenlader oder Bytecode-Manipulation um in den Mock-Objekten die mit den üblichen Sprachkonstrukten nicht änderbaren Aspekte wie statische oder finale Methoden bzw. Konstruktoren zu manipulieren. PowerMock wurde ursprünglich von Johan Haleby und Jan Kronquist entwickelt, inzwischen arbeiten mehr als 10 Entwickler an der Software.[4] 2008 erschien mit Version 1.0 der erste Major-Release. PowerMock unterliegt der Lizenz Apache 2.0. Powermock wird von bekannten Frameworks und Werkzeugen wie Spring, Neo4j, Checkstyle, JBoss AS oder Hudson zum Testen verwendet.[5] BeispielDas folgende Beispiel[6] demonstriert einen Teil der Möglichkeiten, die PowerMock bietet. Gegeben sei folgendes Szenario: Die zu testende Unit sei die Klasse public class Calculator {
public int add(int a, int b) {
return MathUtil.addInteger(a, b);
}
}
public abstract class MathUtil {
public static final int addInteger(int a, int b) {
return a + b;
}
private MathUtil() {}
}
Das Verhalten von @RunWith(PowerMockRunner.class)
@PrepareForTest( MathUtil.class )
public class CalculatorTest {
/** Unit under test. */
private Calculator calc;
@Before public void setUp() {
calc = new Calculator();
PowerMockito.mockStatic(MathUtil.class);
PowerMockito.when(MathUtil.addInteger(1, 1)).thenReturn(0);
PowerMockito.when(MathUtil.addInteger(2, 2)).thenReturn(1);
}
@Test public void shouldCalculateInAStrangeWay() {
assertEquals(0, calc.add(1, 1) );
assertEquals(1, calc.add(2, 2) );
}
}
Zunächst wird ein spezieller Test-Runner verwendet, der vom PowerMock-Framework zur Verfügung gestellt wird. Mit der Annotation In der setup-Methode wird Nun wird das Mock-Verhalten der statischen Methode definiert, indem Siehe auchLiteratur
WeblinksEinzelnachweise
Information related to PowerMock |