HelloWorldのテストの問題点
HelloWorldのテストは一応出来はしたが、なんかしっくり来ない。
しっくり来ない部分は次の通り
- MockPrintStreamがPrintStreamをextendしていること
- PrintStreamがfinalだったりしたら出来ない
- System.setOut で System.out を設定していること
- 同じようなfinal static field で設定が無い場合テストできない
で、理想的にはこういうコードでテストしたいのだが今のところうまく動かない。
package tutorial; import static org.junit.Assert.*; import java.io.PrintStream; import mockit.*; import org.junit.Test; public class HelloWorldTest2 { static public class MockPrintStream { public void println(String str) { assertEquals(str,"Hello World"); } } @Test public void testMain() throws Exception { Mockit.redefineMethods(PrintStream.class, MockPrintStream.class); HelloWorld.main(null); } }
PrintStreamという組み込みクラスを偽装するのが問題で、Boot Class Loaderがどうたら。。。という事のようだ。
引き続き調査する。