junitでユニットテストを書く時の観点を教えて下さい
プロジェクトでjunit5を使ったユニットテストを行おうと思っております。
今までテストコードをまともに書いたことが無かったので、どのような観点で書いていけばいいのかが分かりません。
例えばHashMapのget(), put()をテストする場合で書いてみました。
この場合はこのようなテストコードでいいのでしょうか?
ジェネリクスを意識して別の型でも試したり、他の値でも試したほうがよいのでしょうか?
class HashMapTest {
private Map<String, String> stringHashMap;
private Map<String, String> immutableMap;
@DisplayName("テスト毎に初期化")
@BeforeEach
void init() {
stringHashMap = new HashMap<>();
stringHashMap.put("alice", "hoge");
stringHashMap.put("bob", "fuga");
immutableMap = Map.of();
}
@DisplayName("値取得のテスト")
@Test
void getTest() {
assertAll("MapGetTest",
() -> assertEquals(stringHashMap.get("alice"), "hoge"),
() -> assertNotEquals(stringHashMap.get("bob"), "piyo"));
}
@DisplayName("値設定のテスト")
@Test
void putTest() {
stringHashMap.put("carol", "piyo");
assertAll("MapPutTest",
() -> assertEquals(stringHashMap.get("carol"), "piyo"),
() -> assertNotEquals(stringHashMap.get("dave"), "hoge"));
}
@DisplayName("不変Mapの例外テスト")
@Test
void immutableTest() {
assertThrows(UnsupportedOperationException.class, () -> immutableMap.put("key", "value"));
}
}