

プロジェクトでjunit5を使ったユニットテストを行おうと思っております。  
今までテストコードをまともに書いたことが無かったので、どのような観点で書いていけばいいのかが分かりません。  
例えばHashMapのget(), put()をテストする場合で書いてみました。

この場合はこのようなテストコードでいいのでしょうか？  
ジェネリクスを意識して別の型でも試したり、他の値でも試したほうがよいのでしょうか？

[code]

    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"));
        }
    }
    
    
[/code]


CC BY-SA 4.0
2019-07-09T17:09:31.213
56524
2023-09-21T05:06:05.713
2019-07-10T01:14:33.693
3060
24914
question
java junit
junitでユニットテストを書く時の観点を教えて下さい


ユニットテストを書く前提として、普通はまず、対象コードの仕様が必要です。

<https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashMap.html#get-
java.lang.Object->

例えば上記はHashMapのgetメソッドのjavadocですが、nullを返すケースについて記載があります。  
例示されたコードにはこれに対応するテストケースがありません。  
まずは最低限、こういった明確な仕様のすべてについて全パターンを網羅するところから始めるのが良いと思います。


CC BY-SA 4.0
2019-07-14T08:28:52.853
56635
2019-07-14T08:28:52.853
7572
56524
answer