HelloWorldをJMockitでテストする2
試行錯誤の末、HelloWorldのテストコードはこんな感じになった
package tutorial; import java.io.PrintStream; import mockit.*; import org.junit.Test; public class HelloWorldTest2 { static class MockPrintStream extends PrintStream { public MockPrintStream() { super(System.out); } public void println(String str) { } } @Test public void testMain() throws Exception { new Expectations(true) { MockPrintStream mock; { mock.println(withEqual("Hello World")); System.setOut(mock); } }; HelloWorld.main(null); } }
これでwithEqualのパラメータを別のものに変えるとテストが失敗するので、println に "Hello World"が渡されていることが確認できる。
JMockitのExpectationsというのがEasyMockのrecord/replayと同様の考えのものらしい(EasyMockを使用したこと無いので未確認)
ただし、なんとなくこのテストコードは正しい実装ではない感じがするので、引き続き調査する。
いい実装を知っている方はコメントしてください