<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=PowerMock</id>
	<title>PowerMock - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=PowerMock"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=PowerMock&amp;action=history"/>
	<updated>2026-05-25T21:42:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=PowerMock&amp;diff=2442079&amp;oldid=prev</id>
		<title>91.18.116.63: /* Beispiel */Typo</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=PowerMock&amp;diff=2442079&amp;oldid=prev"/>
		<updated>2020-07-23T20:10:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispiel: &lt;/span&gt;Typo&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Name                              = PowerMock&lt;br /&gt;
| Logo                              = [[Datei:Powermock.png|PowerMock Logo]]&lt;br /&gt;
| Screenshot                        = &lt;br /&gt;
| Beschreibung                      = &lt;br /&gt;
| Maintainer                        = Johan Haleby, Jan Kronquist&lt;br /&gt;
| Hersteller                        = &lt;br /&gt;
| Management                        = &lt;br /&gt;
| AktuelleVersion                   = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVersionFreigabeDatum      = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVorabVersion              = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Betriebssystem                    = [[Plattformübergreifend]]&lt;br /&gt;
| Programmiersprache                = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Kategorie                         = [[Softwaretest|Test]]-[[Framework]]&lt;br /&gt;
| Lizenz                            = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Deutsch                           =&lt;br /&gt;
| Website                           = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PowerMock&amp;#039;&amp;#039;&amp;#039; ist ein [[Java (Programmiersprache)|Java]]-[[Framework]], zum Erstellen von [[Mock-Objekt]]en für [[Unit-Test]]s.&amp;lt;ref name=&amp;quot;Homepage&amp;quot;/&amp;gt; Es läuft als Erweiterung anderer [[Mocking Framework|Mocking-Frameworks]] wie [[Mockito]] oder [[Easymock]] und erweitert deren Funktionsumfang um die Fähigkeit, bestimmte Sprachaspekte wie [[statische Methode]]n oder [[Konstruktoren und Destruktoren|Konstruktoren]] zu mocken.&lt;br /&gt;
&lt;br /&gt;
PowerMock verwendet Techniken wie einen eigenen [[Java Virtual Machine|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.&lt;br /&gt;
&lt;br /&gt;
PowerMock wurde ursprünglich von Johan Haleby und Jan Kronquist entwickelt, inzwischen arbeiten mehr als 10 Entwickler an der Software.&amp;lt;ref&amp;gt;[https://www.openhub.net/p/powermock/factoids Powermock Fakten auf OpenHub]&amp;lt;/ref&amp;gt; 2008 erschien mit Version 1.0 der erste Major-Release. PowerMock unterliegt der Lizenz [[Apache-Lizenz|Apache 2.0]].&lt;br /&gt;
Powermock wird von bekannten Frameworks und Werkzeugen wie [[Spring (Framework)|Spring]], [[Neo4j]], [[Checkstyle]], [[JBoss AS]] oder [[Hudson (Software)|Hudson]] zum Testen verwendet.&amp;lt;ref&amp;gt;[http://mvnrepository.com/artifact/org.powermock/powermock-module-junit4/usages Powermock-JUnit4 Verwender]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Das folgende Beispiel&amp;lt;ref name=&amp;quot;Beispiel&amp;quot;&amp;gt;[http://blog.codecentric.de/2011/11/testen-und-mocken-statischer-methoden-in-java/ Blog: Testen und Mocken statischer Methoden in Java]&amp;lt;/ref&amp;gt; demonstriert einen Teil der Möglichkeiten, die PowerMock bietet. Gegeben sei folgendes Szenario:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Powermock bsp.png|zentriert|Testszenario]]&lt;br /&gt;
&lt;br /&gt;
Die zu testende Unit sei die Klasse &amp;lt;code&amp;gt;Calculator&amp;lt;/code&amp;gt;, die die Berechnung zweier Integer-Werte an die Klasse &amp;lt;code&amp;gt;MathUtil&amp;lt;/code&amp;gt; delegiert, die nur statische Methoden anbietet:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Calculator {&lt;br /&gt;
   public int add(int a, int b) {&lt;br /&gt;
      return MathUtil.addInteger(a, b);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public abstract class MathUtil {&lt;br /&gt;
   public static final int addInteger(int a, int b) {&lt;br /&gt;
      return a + b;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   private MathUtil() {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Verhalten von &amp;lt;code&amp;gt;MathUtil&amp;lt;/code&amp;gt; soll nun gemockt werden, weil im Testszenario die Addition andere Ergebnisse als sonst liefern soll. Der folgende Test ermöglicht dies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@RunWith(PowerMockRunner.class)&lt;br /&gt;
@PrepareForTest( MathUtil.class )&lt;br /&gt;
public class CalculatorTest {&lt;br /&gt;
&lt;br /&gt;
   /** Unit under test. */&lt;br /&gt;
   private Calculator calc;&lt;br /&gt;
&lt;br /&gt;
   @Before public void setUp() {&lt;br /&gt;
      calc = new Calculator();&lt;br /&gt;
&lt;br /&gt;
      PowerMockito.mockStatic(MathUtil.class);&lt;br /&gt;
      PowerMockito.when(MathUtil.addInteger(1, 1)).thenReturn(0);&lt;br /&gt;
      PowerMockito.when(MathUtil.addInteger(2, 2)).thenReturn(1);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   @Test public void shouldCalculateInAStrangeWay() {&lt;br /&gt;
      assertEquals(0, calc.add(1, 1) );&lt;br /&gt;
      assertEquals(1, calc.add(2, 2) );&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst wird ein spezieller Test-Runner verwendet, der vom PowerMock-Framework zur Verfügung gestellt wird. Mit der [[Annotation (Java)|Annotation]] &amp;lt;code&amp;gt;@PrepareForTest( MathUtil.class )&amp;lt;/code&amp;gt; wird die zu mockende Klasse vorbereitet. Diese Annotation kann auch eine ganze Liste von zu mockenden Klassen verarbeiten. In unserem Beispiel besteht die Liste aus einem Element &amp;lt;code&amp;gt;MathUtil.class&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In der setup-Methode wird &amp;lt;code&amp;gt;PowerMockito.mockStatic(...)&amp;lt;/code&amp;gt; aufgerufen.&lt;br /&gt;
&lt;br /&gt;
Nun wird das Mock-Verhalten der statischen Methode definiert, indem &amp;lt;code&amp;gt;PowerMockito.when(...)&amp;lt;/code&amp;gt; aufgerufen wird. Danach kommen in den eigentlichen Tests die typischen [[Assertion (Informatik)|Assertions]].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[JUnit]]&lt;br /&gt;
* [[Easymock]]&lt;br /&gt;
* [[Mockito]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=Michael Tamm |Titel=JUnit-Profiwissen: Effizientes Arbeiten mit der Standardbibliothek für automatisierte Tests in Java |Hrsg= |Sammelwerk= |Band= |Nummer= |Auflage= |Verlag=dpunkt.verlag |Ort= |Datum=2013-12-03 |Kapitel=6.9 PowerMock |Seiten= |ISBN=9783864914102 |Online=https://books.google.de/books?id=RBNMDAAAQBAJ&amp;amp;pg=PT177 |Abruf=2018-01-20}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Google Code|powermock}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Homepage&amp;quot;&amp;gt;[http://www.powermock.org/ PowerMock Homepage] (englisch)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java-Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Java-Bibliothek]]&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Testsoftware]]&lt;/div&gt;</summary>
		<author><name>91.18.116.63</name></author>
	</entry>
</feed>