public class Foo { public void shutdown() { System.exit(0); } } Fooクラスのshutdown()メソッドで、以下の挙動をassertしたいんだけど・・・ + System.exit()が呼ばれていること。 + その引数に"0"が渡されていること。 書き方が分からん!! Mockitoだけではstaticメソッドをmock出来ない→PowerMock + MockitoならOK。 さらに @RunWith(PowerMockRunner.class) でjava.lang や java.net などのシステムクラスのstaticメソッドもmockできる。 ここまではOKなんだけど・・・ 実際にassertをどう書けば良いのか分からない。 #code|java|> @RunWith(PowerMockRunner.class) @PrepareForTest( { Foo.class }) public class FooTest extends TestCase { @Test public void shutdown() { mockStatic(System.class); PowerMockito.doNothing().when(System.class); Foo f = new Foo(); f.shutdown(); } } ||< ここまでは書けるんだけど、実際にverifyStatic()やargument matcherをどう組み合わせれば良いのかで手詰まり。 ・・・フツーこんなのテストしないのかな?いやでも、マジで「"1"でもなく"2"でもなく、ちゃんと"0"を渡していて、なおかつ1回だけ呼ばれていること」をassertできないと不安で不安で困る。 だって"0"以外が渡されたら終了コードが期待してないものになるじゃん?そりゃ不味い。なのでこれをassertできないとテストの意味がない。 困ったな・・・。 参考メモ: - MockSystem - powermock - Project Hosting on Google Code -- http://code.google.com/p/powermock/wiki/MockSystem - MockitoUsage13 - powermock - Project Hosting on Google Code -- http://code.google.com/p/powermock/wiki/MockitoUsage13 - MockStaticTest.java - powermock - Project Hosting on Google Code -- http://code.google.com/p/powermock/source/browse/trunk/modules/module-test/powermockito/junit4/src/test/java/samples/powermockito/junit4/staticmocking/MockStaticTest.java?r=1366 - SystemClassUserTest.java - powermock - Project Hosting on Google Code -- http://code.google.com/p/powermock/source/browse/trunk/modules/module-test/powermockito/junit4/src/test/java/samples/powermockito/junit4/system/SystemClassUserTest.java?r=1366 - StaticPartialMockingTest.java - powermock - Project Hosting on Google Code -- http://code.google.com/p/powermock/source/browse/trunk/modules/module-test/powermockito/junit4/src/test/java/samples/powermockito/junit4/partialmocking/StaticPartialMockingTest.java?r=1366 - mocking void methods with arguments - PowerMock | Google グループ -- http://groups.google.com/group/powermock/browse_thread/thread/4d2462bbe69912e6 - Use Mockito to mock static void method - PowerMock | Google グループ -- http://groups.google.com/group/powermock/browse_thread/thread/e0a3b047518aaf4a/316c87413ac312e0 - Expectations on static void methods? - PowerMock | Google グループ -- http://groups.google.com/group/powermock/browse_thread/thread/383cc9b34b286210/71599db839c14202