public class Foo { public void shutdown() { System.exit(0); } }
Fooクラスのshutdown()メソッドで、以下の挙動をassertしたいんだけど・・・
書き方が分からん!!
Mockitoだけではstaticメソッドをmock出来ない→PowerMock + MockitoならOK。
さらに
@RunWith(PowerMockRunner.class)
でjava.lang や java.net などのシステムクラスのstaticメソッドもmockできる。
ここまではOKなんだけど・・・
実際にassertをどう書けば良いのか分からない。
@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できないとテストの意味がない。
困ったな・・・。
参考メモ: