2016-10-21 3 views
1

대형 API에 대한 단위 테스트는 Laravel을 사용하여 작성했습니다. 시스템의 복잡성으로 인해 단일 테스트를 수행하는 데 사용자, 세션 등 많은 이전 조건이 필요합니다. , 활성 영역, 등등과 (데이터베이스에 테스트 레코드를 남기지 않기 위해) 트랜잭션을 사용하고 있기 때문에 모든 테스트 함수를 이전 조건으로 만들어야합니다 ... 코드가 빠르게 커지고 테스트가 더 이상 단일화되지 않습니다 (필자는 실제 목표를 테스트하기 전에 모든 이전 조건을 점검해야하기 때문에 역설적으로 다른 단일 테스트를 수행해야합니다.)대규모 프로젝트에서 적절한 단위 테스트

어떻게 이러한 상황을 처리합니까? 테스트를 순서대로 실행하고 더 많은 테스트를 위해 상태를 유지합니까? 조롱을 어떻게 처리합니까?

감사합니다.

+1

당신이 묘사 한 것이 단위 테스트라고 생각하지 않습니다. 그리고 phpunit으로 테스트를 실행해도 단위 테스트가되지는 않습니다. –

+0

마지막 날에 나는 많은 테스트를 읽었으며 이제는 단위 테스트, 수락 테스트 및 통합 테스트를 비롯한 다양한 수준의 테스트가 있음을 알 수 있습니다. – Cedmundo

답변

4

당신이 설명한 것과 같은 접근 방식은 빠르게 유지 보수가 불가능 해집니다. 커다란 유지 보수가 가능한 유닛 테스트 스위트를 만드는 데있어서 거대한 부분 중 하나는 독립적으로 테스트함으로써 계단식 실패를 최소화하는 것입니다.

각 테스트가 다른 테스트에 종속 된 경우 종속성 구현이 변경되면 많은 관련이없는 테스트 실패가 발생합니다. 고립 된 상태로 테스트하면이를 줄일 수 있습니다. 격리 된 테스트 만들기는 깨끗한 아키텍처와 loosely coupled 구성 요소의 제품입니다. Dependency injection은 일반적으로 쉽게 테스트 할 수있는 디자인에서 큰 역할을합니다.

이렇게하는 한 가지 방법은 종속성을 분리하고 응용 프로그램 논리를 실행하는 것입니다.

+0

'유지할 수있는'을 '유지 불능'으로 바꾸는 것에 신경 쓰지 않기를 바랍니다. 약 95 %가 오타였습니다. – ceejayoz

+0

우리는 그 시스템을 재건하고 있습니다. (신으로부터 감사드립니다.) TDD를 워크 플로우에 도입하고 있습니다. – Cedmundo

관련 문제