PHPUnit을 실행하기 위해 필요한 시간이 다가 오면서 우리 팀은 단위 테스트를 병렬로 실행하는 것이 궁금합니다.. 최근에 Paraunit에 대한 기사를 읽었으며 Sebastian Bergman은 PHPUnit 3.7에 병렬 처리 기능을 추가 할 것이라고 썼습니다.통합 테스트에서 평행 PHPUnit 테스트
그러나 통합 테스트 또는 더 일반적으로 DB와 상호 작용하는 테스트의 경우에는 문제가 남아 있습니다. 일관성을 유지하기 위해 각 테스트 후에 testDB를 재설정하고 조명기를로드해야합니다. 그러나 병렬 테스트에서는 모든 프로세스가 동일한 DB을 사용하기 때문에 경쟁 조건에 문제가 있습니다.
통합 테스트를 병렬로 실행하려면 각 프로세스에 자체 데이터베이스를 할당해야합니다. 누군가가이 문제를 어떻게 해결할 수 있을지에 대한 생각을 가지고 있다면 물어보고 싶습니다. 어쩌면 다른 xUnit 구현에서 이미이 문제에 대한 해결책이 구현되었을 수도 있습니다.
우리 팀에서는 MongoDB를 사용하고 있습니다. 그래서 하나의 솔루션은 각 PHPUnit 프로세스에 대한 설정 파일을 프로그래밍 방식으로 생성하고 생성 된 DB 이름 (이 프로세스의 경우)을 setUp()
메서드로 주 TestDb를 복제 할 수 있습니다 임시 한. 그러나이 접근법을 구현하기 전에 주제에 대한 아이디어를 묻고 싶습니다.
이와 관련된 질문 (병렬 xUnit의 약 일반적으로) : http://programmers.stackexchange.com/q/56092/58909 그러나 다시, 어떻게에 테스트와 데이터베이스가 실제로 다루어지지 않습니다. –
매우 흥미로운 토론. 이 문장은 특히 우리 상황과 관련이 있습니다 : _ "이 모든 것을 코딩 할 수 있으며 간단한 예제가 작동하도록 조정될 수 있습니다.하지만 원래 프로그램에서는이 작업을 수행하는 것이 불필요합니다. 스레드 안전 코드를 작성하면 당신은 단위 테스트를 실행할 수 있습니다 많은 사람들에게 무리가 있습니다. 그래서 멀티 스레드 단위 테스트는 선택적 추가로 남아 있어야합니다. "_ –
나는 그들을 별도의 VM에서 실행할 것입니다. –