JMockitのAnnotationを使ったテスト
前の redefineMethods を使った次のようなテストコードは
package tutorial; import static org.junit.Assert.*; import mockit.*; import org.junit.After; import org.junit.Test; public class HelloWorldTest2 { static public class MockPrintStream { public void print(String str) { assertEquals(str,"Hello World"); } } @Test public void testMain() throws Exception { Mockit.redefineMethods(DummyStream.class, MockPrintStream.class); HelloWorld.main(null); } @After public void tearDown() { Mockit.tearDownMocks(); } }
JMockit の Annotationを使って次のようにも書ける。
package tutorial; import static org.junit.Assert.*; import mockit.*; import org.junit.After; import org.junit.Test; public class HelloWorldTest4 { @MockClass(realClass=DummyStream.class) static public class MockPrintStream { @Mock public void print(String str) { assertEquals(str,"Hello World"); } } @Test public void testMain() throws Exception { Mockit.setUpMock(new MockPrintStream()); HelloWorld.main(null); } @After public void tearDown() { Mockit.tearDownMocks(); } }
ただ、この書き方のメリットがいまいち理解できていない。