テスト対象は、各層のpublicメソッドです。
privateメソッドをテストするのは良くなく、privataeメソッドを呼び出すpublicメソッドをテストすることで、カバレッジを高めます。
(全層共通)各テストケースの基本構成
テストケースのテストコードは次の流れを推奨する。
1 | given | 〜と言う前提条件下で | テストケースの前提となる設定を記述する。DBレコードの準備など。 |
2 | when | 〜の場合 | テスト対象メソッドの呼び出しを行う。 |
3 | then | 〜であるべき(〜であること) | テスト対象メソッドを呼び出したことによる期待値を評価する。 DBレコードの更新などをアサーションする。 |
上記の3つの部分に明確に分けて書くことで、テストコードの保守性は向上する。
サービス層の自動テスト・JUnit
サービス層のJUnitの基本形
LoginServiceImpl#login(String, String) というメソッドのテストを書くとします。
@SpringBootTest
public class LoginServiceImplTest {
@Autowired
private LoginServiceImpl loginServiceImpl;
/**
* テスト条件:XXX
* 期待値:YYY
*/
@Test
public void login1() {
String login = loginServiceImpl.login("foo", "bar");
Assertions.assertEquals(login, "expected");
}
}
このように、テスト対象のサービスクラスを、@AutowiredによりテストクラスにDIして、テストメソッドでテスト対象のメソッドを呼び出すのが基本形です。