🎁[속보] 인프런 내 깜짝 선물 출현 중🎁

워밍업 클럽 3기 BE 클린코드&테스트 - 3주차 발자국

워밍업 클럽 3기 BE 클린코드&테스트 - 3주차 발자국

강의 수강

스프링 & JPA 기반 테스트 #5 #6 #7 #8 #9

  • Layered Architecture

  • 단위 테스트 vs 통합 테스트

  • Ioc, DI, AOP

  • ORM, 패러다임의 불일치, Hibernate

  • String Data JPA

  • @SpringBootTest vs @DataJpaTest

  • @SpringBootTest vs @WebMvcTest

  • @Transactional(readOnly = true)

  • @RestController, @ExceptionHandle

  • Spring bean validation notnull, not empty, not blank

  • @WebMvcTest

  • ObjectMapper

  • Mock, Mockito, @MockBean

미션

[Readable Code] 강의의 두 프로젝트(지뢰찾기, 스터디카페) 중 하나를 골라, 단위 테스트를 작성해 봅시다. 조건은 아래와 같습니다.

  • 스터디 카페로 테스트 코드 작성

  • getter 같은 기본적인 메서드 제외하고 모든 단위 테스트 작성

  • 테스트하기 힘든 코드(상수로 선언된 path가 필요한 메서드)경우 테스트 만을 위한 코드 새로 만들어서 테스트(path 는파라미터로 주입)

     

    public StudyCafeLockerPasses getLockerPassesTest(final String path) {
            try {
                List<String> lines = Files.readAllLines(Paths.get(path));
                List<StudyCafeLockerPass> lockerPasses = new ArrayList<>();
                for (String line : lines) {
                    String[] values = line.split(",");
                    StudyCafePassType studyCafePassType = StudyCafePassType.valueOf(values[0]);
                    int duration = Integer.parseInt(values[1]);
                    int price = Integer.parseInt(values[2]);
    
                    StudyCafeLockerPass lockerPass = StudyCafeLockerPass.of(studyCafePassType, duration, price);
                    lockerPasses.add(lockerPass);
                }
    
                return StudyCafeLockerPasses.of(lockerPasses);
            } catch (IOException e) {
                throw new RuntimeException("파일을 읽는데 실패했습니다.", e);
            }
        }

https://github.com/wjdrltjr5/inflearn-warming-up/tree/lesson6-4

회고

  • 상수가 필요한 코드같은 경우 path를 파라미터로 받게 하는 것이 테스트 하기가 더 편리할 것 같아서 수정하였다

  • 이렇게 하는 것이 맞는 것인지는 모르겠다.

댓글을 작성해보세요.


채널톡 아이콘