본문 바로가기
📝 회고/✅ 22년 회고

[일일회고] 22.06.02 - "검증문 실패해도 계속하기, 통합테스트를 위한 더미데이터 세팅, 코드스쿼드 선배 기수와 온라인 만남"

by kukim 2022. 6. 2.

📚 배운 것

AssertJ의 assertAll

JUnit5나 AssertJ의 검증 메서드(e.g. assertThat() ..)가 여러 개 있을 때 앞의 하나가 실패하면 뒤의 검증문을 실행하지 않는다.

이를 위해 묶어서 한 번에 실행할 수 있다.

글작성 : 2022.06.02 - [✅ 테스트코드] - JUnit5에서 검증문이 중간에 실패해도 멈추지 않고 검증문 모두 실행하기(AssertAll, AssertJ, SoftAssertions)

 

통합 테스트의 데이터베이스  테스트, 더미데이터 세팅

통합 테스트를 위한 데이터베이스의 초기값, 더미 데이터를 넣어야 하는 상황이 있었다.

생각해본 세팅 방법은 아래와 같다.

1. java 코드로 직접 data 넣기 (하나씩 넣거나 initDB() 와 같은 마더 클래스로 한 번에 넣기 등)

2. @Sql 어노테이션을 활용해 초기 .sql 스크립트 실행하기

3. application-test.yml 테스트용 환경 세팅으로 초기에. sql 세팅하기

 

테스트의 독립성을 위해 테스트 마다 동일한 환경이 갖춰져야 한다. 이전 테스트에서 update나 delete 했다면 rollback 하여 다음 테스트에 영향을 미치면 안 된다.

 

1,2번의 경우 테스트마다 데이터를 초기값을 넣고 다시 지워주는 기능이 별도로 필요하다. 아니면 모든 과정을 롤백한다.

3번의 경우 초기 데이터가 세팅되어있기 때문에 롤백으로 독립성을 유지한다.

 

현재 3번의 경우로 선택했다.

하지만 문제가 있다. 초기 세팅하는 .sql스크립트에 데이터가 추가된다면 테스트 회귀 방지가 되지 못한다. 

 

테스트를 위한 DB 세팅하는 방법을 다시 생각해보아야겠다.

 

@PathVaribale, @RequestParam에서 Optional로 받기

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam Optional<String> id){
    return "ID: " + id.orElseGet(() -> "not provided");
}

@GetMapping(value = { "/api/employeeswithoptional", "/api/employeeswithoptional/{id}" })
@ResponseBody
public String getEmployeesByIdWithOptional(@PathVariable Optional<String> id) {
    if (id.isPresent()) {
        return "ID: " + id.get();
    } else {
        return "ID missing";
    }
}

// https://www.baeldung.com/spring-pathvariable
// https://www.baeldung.com/spring-request-param

@PathVariable, @RequestParam의 값을 Optional로 받을 수 있다.

 

코드 스쿼드 선배 기수와 온라인 미팅(홈커밍 데이)

오늘 저녁 7시부터 거의 10시까지 3시간 동안 코드 스쿼드 선배들과 줌으로 만나 이야기를 나눴다.

 roach, jane, yeon, 마르코, 쿠퍼, K, 새리, dong, Hiro, Dan, dion, 우디 선배들을 만났다. 공식 시간이 마쳤음에도 끝까지 남아서 경험 공유해준 선배들이 있어 힘이 많이 됐다. 감사합니다.

 

- 멘탈관리/슬럼프 : 자주 쉬기, 푹 쉬기, 쉬어야 공부도 할 수 있다.

- 스프링 vs db vs 인프라 : 회사, 팀마다 다르겠지만 신입 입장에서 스프링/DB에 집중하는 것을 추천한다.

- 프로젝트는 어떻게?

    - 기획자,디자이너가 있으면 좋다. view가 없다면 API 만 있어도 코드가 좋은 것은 티가 난다.

    - 모든 것을 다 잘하긴 어렵다. 한 개를 하더라도 왜 이 기술을 선택했고 어떤 문제가 있고 어떻게 해결했는지 알아야 한다.

...(생략)

 

댓글