테스트 중인 코드와 관련하여 테스트 코드를 어디에 배치해야 합니까?
-
19-09-2019 - |
문제
제가 생각할 수 있는 두 가지 확실한 장소는 제가 작업 중인 코드 바로 옆에 있는 일종의 "테스트" 폴더일 것입니다.그래서 다음과 같습니다.
\project-code
\my-feature
\production-code
\testing
***my tests***
\co-workers-feature
\production-code
\testing
또는 테스트 코드를 완전히 별도의 계층 구조로 나눌 수도 있습니다.그래서 다음과 같습니다.
\project-code
\my-feature
\co-workers-feature
\testing-project-code
\my-feature
***my tests***
\co-workers-feature
나는 많은 프레임워크가 두 번째 접근 방식을 사용하는 것을 보았지만 최근에는 대부분 편의를 위해 프로덕션 코드 내에 테스트 코드를 배치해 왔습니다.한 가지 접근 방식이 다른 접근 방식보다 훨씬 낫습니까? 아니면 여기에 모범 사례가 있습니까?
해결책
두 번째 옵션을 사용합니다. 즉, 필요한 경우 테스트없이 코드를 배송 할 수 있습니다. 또한 수업이나 패키지를 보면서 단위 테스트가 어디에 있는지 알고 있습니다.
관련 질문은 다음과 같습니다.
다른 팁
가장 편리한 곳에 두십시오. 구축 시스템을 설정하여 원하는 경우 최종 제품에서 제거 할 수 있습니다. 테스트는 "모범 사례"입니다. 효과를 줄이지 않고 테스트를 더 쉽게 만드는 것은 단순히 모범 사례를 향상시키는 것입니다.
나는 단위 테스트를 가까이 유지하는 것을 선호합니다. 옵션 1이 잘 작동하는 것을 보았습니다. 작은 프로젝트의 경우 두 가지 접근 방식이 모두 잘 작동하지만 프로젝트가 점점 커짐에 따라 트리의 매우 다른 부분에 살 때 테스트를 찾고 유지하기가 더 어렵습니다. 가까운 경우 제품 코드를 변경할 때 변경하면 자연스럽게됩니다. 그들이 멀리 있다면 더 많은 정신적 노력이 필요하며 더 많은 무시 될 것입니다. 이것은 그들이 동기화되지 않을 가능성이 더 크다는 것을 의미합니다.
이를 위해서는 테스트 디렉토리를 조건부 편집 할 수있는 메이크 시스템이 필요합니다. 당신은 매번 그들을 만들고 싶지 않습니다. 당신이 그것을 얻을 수 없다면, 별도의 나무가 필요할 수 있습니다.
귀하가 관리하는 웹사이트라면 모두 같은 폴더에 넣어도 문제가 되지 않습니다.귀하가 출시하는 고전적인 소프트웨어의 경우, 출시할 때 실수로 부풀어오르는 일이 없도록 사례 2와 같이 별도로 두는 것이 좋은 습관이 되는 경향이 있습니다.
나에게, 첫 번째 옵션은 특히 SCM 관점에서 더 의미가 있습니다. 생산 코드 및 테스트 코드는 동기화되며 (필요한대로) 프로젝트를 태그하거나 분기하는 경우 프로덕션과 제작 및 분기를 태그하거나 분기합니다. 동시에 테스트 코드.