IDEやエディタにスニペットとして登録している、テスト記述時のテンプレートがあるが、最近他人の端末でコーディングする機会が多く、「あれ、どう書くんだっけ?」となることが多かったのでメモ。
環境
JUnit 4.12、Mockito 2.27.0。
Rule
例外のテストと、Mockitoを使うためのRule。
@Rule public ExpectedException thrown = ExpectedException.none(); @Rule public MockitoRule mockitoRule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
パラメーター化テスト
いくつか方法はあるが、任意のFixture
オブジェクトを作成し、@RunWith(Theories.class)
、@DataPoint/@DataPoints
、@Theory
の組み合わせがメンテナンスしやすいと思う。
Fixture
のクラス宣言には、Lombokの@Value
を付けておくと楽。
@RunWith(Theories.class) public class MyClassTest { private MyClass myClass = new MyClass(); @Value(staticConstructor = "of") private static class Fixture { String value; boolean expected; } @DataPoints public static List<Fixture> getFixtures() { return Arrays.asList( Fixture.of("foo", true), Fixture.of("bar", false) ); } @Theory public void myMethodTest(Fixture fixture) { assertThat(myClass.myMethod(fixture.value)).isEqualTo(fixture.expected); } }
MockitoのdoReturn/whenとwhen/thenReturnの使い分け
Strictness.STRICT_STUBS
だと、when/thenReturn
では警告が出た気がする(どんな場合だったかは忘れた)。
なんて意見もあり、doReturn/when
さえ覚えておけば、when/thenReturn
は使う機会はないと思う。