Hacker News 의견
  • 첫 번째 댓글 요약:

    • Testcontainers에 대한 극찬을 예상치 못했음.
    • Docker를 사용하지 않던 환경에서 오면 매력적으로 보일 수 있음.
    • 많은 사용 사례에서 유용하지만, 다른 컨테이너화된 워크플로우와 잘 작동하게 만들기는 어려움.
    • Testcontainers는 Docker CLI에 대한 커스텀 쉘 호출을 핵심 기능으로 사용하는 라이브러리로, 다른 컨테이너화된 워크플로우를 도입할 때 문제와 복잡성을 야기함.
    • 호스트 머신에서만 실행되고 다른 Docker 관련 작업이 없다고 가정하는 경향이 있어, 종종 비 Docker 환경의 라이브러리보다 나쁘거나 더 나쁠 수 있음.
  • 두 번째 댓글 요약:

    • Testcontainers는 통합 테스트에 있어 게임 체인저임.
    • 언어별 Docker API를 제공하여 컨테이너를 쉽게 구동하고 연결 준비 상태를 확인할 수 있음.
    • 모든 새 프로젝트에 통합 테스트를 위해 Testcontainers를 사용함.
    • CI 설정은 Linting, 빌드, 유닛 테스트, 그리고 Testcontainers를 사용한 통합 테스트를 포함함.
    • 언어 바인딩은 데이터베이스 작업에 유용한 헬퍼 함수를 제공함.
  • 세 번째 댓글 요약:

    • Docker-compose.yml을 사용하는 것이 더 나은지 이해하지 못함.
    • 필요한 컨테이너 간 복잡한 의존성이 있을 때 Testcontainers는 비교적 약함.
    • 5년 전에 사용해본 경험이 있지만, 지금은 상황이 크게 나아졌을 수도 있음.
  • 네 번째 댓글 요약:

    • 실제 데이터베이스/엘라스틱서치/레디스/바니시 등을 사용하는 통합 테스트를 매우 가치 있게 여김.
    • Testcontainers는 테스트 스위트 동안 새로운 엘라스틱서치 인덱스를 생성하고 종료하는 등의 작업을 대신해줌.
    • 애플리케이션 기능을 가능한 한 많이 종단 간 통합 스타일 테스트로 커버하는 전략을 선호함.
    • 명확한 입력/출력 쌍이 있는 코드 부분에만 유닛 테스트를 사용하고, 제어할 수 없는 외부 API 호출 등에는 모의 객체(mock)를 사용함.
  • 다섯 번째 댓글 요약:

    • 약 7년 전에 Go 언어용 Testcontainers인 conex를 작성함.
    • Go의 공식 테스트 프레임워크와 일급 통합을 제공함.
  • 여섯 번째 댓글 요약:

    • 각 테스트마다 새롭고 깨끗한 브라우저 인스턴스를 제공하는 것이 느리다는 의견이 있음.
    • 이미 컨테이너 세계에 투자했다면 몇 가지 추가적인 컨테이너를 받아들이는 것이 좋음.
    • 그렇지 않은 경우 추가적인 복잡성이나 부피에 대한 이점이 별로 없음.
  • 일곱 번째 댓글 요약:

    • Testcontainers를 살펴보고 자체 버전을 만듦.
    • Docker는 누수가 많은 추상화로, 다양한 환경에서 테스트를 실행해야 함.
    • Mac, Linux VM, Linux VM의 Docker 컨테이너 내에서 Docker 소켓을 마운트한 상태 등에서 네트워킹이 완전히 다름.
    • 병렬로 테스트를 실행하고 각 테스트에 맞는 로그를 출력하고자 함.
    • Testcontainers가 이러한 문제를 해결했는지 확실하지 않지만, 세부 사항에 악마가 있다는 것을 알게 됨.
  • 여덟 번째 댓글 요약:

    • 로컬 테스트 환경을 docker-compose로 생성함.
    • Testcontainers는 Docker Compose의 구문을 배우지 않고도 Docker 환경을 정의할 수 있는 프로그래밍 언어 추상화로 보임.
    • 테스트 환경이 사용 준비가 되었는지 알기 위해서는 여전히 Docker 네트워킹, 의존성, 헬스체크에 대한 이해가 필요함.
  • 아홉 번째 댓글 요약:

    • 모의 객체나 복잡한 환경 구성이 필요 없음.
    • 테스트 의존성을 코드로 정의하고 테스트를 실행하면 컨테이너가 생성되고 삭제됨.
    • 컨테이너로 통합 테스트를 실행할 수 있다고 해서 유닛 테스트가 필요 없다고 생각하는 것은 오해임.
    • Docker 컨테이너를 설정하는 것은 간단하지만, 컨테이너를 시작하는 것은 고통스럽고 느림.
  • 열 번째 댓글 요약:

    • Java의 로고로 Duke를 사용하는 것에 대한 질문임.