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を使用したこと無いので未確認)

ただし、なんとなくこのテストコードは正しい実装ではない感じがするので、引き続き調査する。
いい実装を知っている方はコメントしてください