気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Private メソッドをテストコードで実行する

テストコード内でprivateメソッドを呼ぶことができず、publicにしたくなります。
そんなときはリフレクションを使って、privateメソッド呼び出すことでテストを書くとよいかも

getDeclaredMethodはprivateメソッドでも取得可。getMethodでは、pravateメソッドを取得できない。

    private  TestService testService;
    @Test
    void testClassName() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        // TestService内のmethodNameというメソッドを取得
        var method = TestService.class.getDeclaredMethod("methodName", String.class);
        // privateメソッドへのアクセス権限付与
        method.setAccessible(true);
        // メソッド実行、テスト
        assertEquals("resultValue", method.invoke(testService, param1, param2));
    }