Expectationsを利用してテストする

HelloWorldのテストを redifineMethods を利用して行ったが、JMockitのExpectations を使ってEasyMockと同じように記録/再生させる方式でもテストできる。
これを使うと Struts2 のアクションとかのテストも比較的簡単に出来そうな気がする。

package tutorial;

import org.junit.After;
import org.junit.Test;
import mockit.*;

public class HelloWorldTest3 {
	@Test
	public void testHello() {
		new Expectations(true)
		{
			DummyStream mock;
			{
				mock.println("Hello World");
			}
		};
		HelloWorld.main(null);
	}

	@After
	public void tearDown() {
	   Mockit.tearDownMocks();
	}
}

new Expectations(true) のブロック中で、偽装するオブジェクトのメソッドを呼ばれる順番で記録し、テストコードでその通り呼ばれるかテストするという感じになる。

mock.println("Hello World") は mock.println( withEqual("Hello World") ) と同じ、 with〜 は色々なテスト方法が用意されている。