TIL

149일차(모험 58일차) - Test 코드 작성 2

haedal-uni 2022. 2. 9. 23:32
728x90

Test 코드                   

오늘은 면접 스터디 주제에 해당하는 자료를 마크다운 형식으로 정리해서 github에 올리는 것을 진행했지만

이 부분은 gihub을 참고해도 되니 했다라는 것만 적고 오늘은 test 코드 얘기에 집중하려고 한다.

 

 

147일차(모험 56일차) - Test 코드 작성 에 이어서 적어본다.

      

print()를 작성하는 것은 test 코드로는 의미가 없어서 아래와 같이 작성했다.

 

 

 

튜터님이 newRegistry 변수로 저장해서 Registry와 비교하는게 어떤 의미가 있을까 라는 질문에

 

registryRepository.save(registry) 코드로 변경했다.

 

    @Test
    void 통합test() throws Exception {
        //given
        Registry registry = new Registry();
        registry.setTitle("hi");
        registry.setMain("hello");

        //when
        registryRepository.save(registry);

        //then
        Assertions.assertThat(1L).isEqualTo(registry.getIdx());
        Assertions.assertThat("hi").isEqualTo(registry.getTitle());
        Assertions.assertThat("hello").isEqualTo(registry.getMain());

    }
}

 

 

그 후 이 코드로 작성하면 되는지 검증을 받았고 idx만 비교하면 될 것 같다는 의견을 받아서 

        Assertions.assertThat(1L).isEqualTo(registry.getIdx());
//       Assertions.assertThat("hi").isEqualTo(registry.getTitle());
//       Assertions.assertThat("hello").isEqualTo(registry.getMain());

나머지는 주석처리를 했다.

 

 

아래는 추가 질문들을 정리했다.

 

❓ : 이 전에 작성한 print()문은 다 지우고 방금 작성한 코드만 활용하면 테스트 코드를 작성한 것일까?

🅰️ : 테스트 코드에서 어떤 결과를 체크하고자 하는지에 따라 달라질 것 같다

 

❓ : 저장이 잘 되었는지 + 가져오는게 잘 되었는지 확인차 test 용이라면 위와 같이 적으면 되는걸까?

🅰️ : 저장하고 다시 조회해서 값을 비교할 수도 있다.

 

❓ : void 통합 test() 으로도 가능하지만 다른 방법으로 저장하고 다시 조회해서 값을 비교할 수 있다는 걸까?

🅰️ : 그렇다. 저장하고 저장된 idx 1 값으로 조회해서 비교를 해보는 것이다.

 

❓ : 아래 코드가 그런 코드가 아닐까?

    @Test
    void 통합test() throws Exception {
        //given
        Registry registry = new Registry();
        registry.setTitle("hi");
        registry.setMain("hello");

        //when
        registryRepository.save(registry);

        //then
        Assertions.assertThat(1L).isEqualTo(registry.getIdx());
    }

🅰️ : 이렇게 해도 되지만 저장하고 한번 더 조회해서 비교해도 된다.

즉, 데이터 베이스에 저장이 되었으니 데이터 베이스를 조회해 보는 것이다.

 

 

❓ : 위 질문에 대한 답을 찾기 위해 구글링을 하다가 갑자기 궁금한 점이 생겼다. 

(참고했던 링크 >> [ 스프링부트에서 DbUnit 을 이용하여 DB 테스트 해보기 ] )

test 코드를 RegistryRepositoryTest로 진행했는데 

Service로 test 코드를 진행해서 값을 dto에 담고 dto와 registry를 비교하는 것도 있다. 잘 못 진행한걸까?

🅰️ : 사실 정해진건 없다. 서비스를 테스트 하는거면 서비스를 호출해야되는게 맞다.

 

 

728x90