@Testcontainers/@Container를 쓰면 클래스마다 컨테이너가 stop되는데 Spring
컨텍스트 캐시는 죽은 포트를 가리키는 DataSource를 재사용해, 전체 스위트
실행 시 두 번째로 실행되는 DB 테스트 클래스가 순서에 따라 Connection
refused로 깨졌다. 컨테이너를 static 블록에서 한 번만 start하고 절대
stop하지 않도록 바꿔 모든 AbstractDbTest 하위 클래스가 동일한 컨텍스트/
컨테이너를 공유하게 했다. SchemaMigrationTest는 자체 스캐폴딩을 지우고
AbstractDbTest를 상속하도록 정리했다.
생성자가 2개(공개 1-인자, 패키지 전용 2-인자)로 늘어나며 Spring의
단일 생성자 자동 선택 규칙이 더 이상 적용되지 않아, 기본 생성자를
찾지 못해 컨텍스트 리프레시 단계에서 BeanCreationException으로
애플리케이션 기동이 실패하고 있었다. 공개 1-인자 생성자에
@Autowired를 명시해 Spring이 이를 명확히 선택하도록 고쳤다.
Spring 컨텍스트를 실제로 로딩해 MattermostClient 빈을 검증하는
테스트가 없어 이 회귀를 잡지 못했으므로, AbstractDbTest(신규
공통 베이스)와 이를 상속하는 MattermostRestClientSpringWiringTest를
추가해 재발을 방지한다.