programing

트래비스가 도커 컨테이너를 구축하는 동안 phpunit 테스트를 실행하려면 어떻게 해야 합니까?

telecom 2023. 10. 27. 21:43
반응형

트래비스가 도커 컨테이너를 구축하는 동안 phpunit 테스트를 실행하려면 어떻게 해야 합니까?

저는 php8의 symphony5 프로젝트를 도커 컨테이너에서 개발하는데, 이 프로젝트는 mariadb를 프로젝트 db로 사용하고 다른 하나는 테스트 db로 사용합니다.최소 코드 적용 범위를 확인할 수 있도록 배치할 때마다 유닛 테스트를 실행하고 싶습니다.

내가 찾은 모든 튜토리얼은 이 것과 같은 도커 컨테이너를 사용하지 않는 것 같습니다. https://blog.travis-ci.com/2021-07-01-tests-laravel . 그리고 트래비스에서 테스트 DB를 실행하기 위해 운동할 수 없습니다.

php Codesniffer나 phpstan 같은 체크는 문제가 없고 나는 그것들을 작동시켰습니다.

    - docker run $IMAGE:$TRAVIS_COMMIT /bin/sh -c "bin/phpcs"
    - docker run $IMAGE:$TRAVIS_COMMIT /bin/sh -c "bin/phpstan analyze -c phpstan.neon.dist --memory-limit=1G"

물론 데이터베이스는 필요 없습니다.

    - docker run $IMAGE:$TRAVIS_COMMIT /bin/sh -c "bin/console do:mi:mi -n"
    - docker run $IMAGE:$TRAVIS_COMMIT /bin/sh -c "bin/console do:fi:lo -n"
    - docker run $IMAGE:$TRAVIS_COMMIT /bin/sh -c "bin/phpunit --configuration=phpunit.xml.dist"

당연히 데이터베이스를 찾지 못한다고 불평합니다.

테스트를 실행하기 위해 mysql 또는 mariadb(sqlite 없음!)를 사용하여 테스트 db를 설정하려면 어떻게 해야 합니까?

지금까지 분석한 바로는 php와 데이터베이스가 같은 컨테이너에서 실행되지 않기 때문에 외부에서 "docker run..."을 통해 테스트를 트리거하면 phpunit이 데이터베이스에 연결할 수 없다는 문제가 있습니다.로컬에서는 도커 컴포지트 및 포트 매핑을 사용하여 이를 방지합니다.

다음과 같이 컨테이너 외부에서 bash로부터 테스트를 시작하려고 하면 동작을 로컬에서 재현할 수 있습니다.

docker run my-local-php-container /bin/sh -c "bin/phpunit --configuration=phpunit.xml.dist"

언급URL : https://stackoverflow.com/questions/68986629/how-can-i-run-my-phpunit-tests-while-travis-builds-my-docker-containers

반응형