2016-07-16 10 views
1

저는 현재 autotools를 사용하여 makefile을 생성하는 프로젝트를 진행하고 있습니다. 보통,이 makefile은 전체 테스트 스위트를 실행하기 위해 make check을 지원합니다. 그러나 나는 소수의 단원 테스트 만이 적용되는 프로그램의 작은 부분을 연구하고 있습니다. make check을 사용하여 전체 제품군 대신 단일 단위 테스트 또는 단위 테스트를 실행할 수 있습니까?Autotools : make check를 사용하여 단일 테스트를 실행하는 방법은 무엇입니까?

편집 :는 디렉토리 구조에 따라 달라 Evan VanderZee suggests, 그래서 나 디렉토리 구조에 대해 조금 더 설명 할 수 있습니다. 이 프로젝트의 디렉토리 구조는 꽤 평평합니다. 대부분의 소스 파일은 src/ 디렉토리에 있으며 일부는 src/ 아래의 하위 디렉토리에 그룹화되어 있습니다. 단위 테스트는 src/tests입니다. 소스 디렉토리 중 어느 것도 Makefile을 포함하지 않습니다. 최상위 레벨에는 메이크 파일 (configure에 의해 생성 됨) 만 있습니다.

답변

5

는 : make check TESTS='name-of-test1 name-of-test2' 명령 줄에 전달 된 TESTS 변수는 메이크에서 하나를 우선합니다.

또는 export TESTS='names-of-tests'; make -e check의 값은 TESTS입니다.

TESTS 대신 check-local 또는 다른 대상을 사용하는 경우이 방법은 작동하지 않습니다.

+0

그게 내가 찾고 있던거야. 이를 통해 일반적인 절차를 사용하여 선택적으로 테스트를 확인할 수 있습니다. 감사! – palaga

1

답변은 사용중인 특정 메이크 파일에 따라 다릅니다. 테스트에 디렉토리 구조가 있으면 하위 디렉토리로 이동하여 서브 디렉토리에 make check을 실행하면됩니다.

나중에 설명 했으므로 디렉토리 구조가 평면이므로 실제로 메이크 파일을 보지 않고도 말하기 어렵습니다. 실행할 특정 테스트에 대해 작성된 실행 파일의 이름을 알고있는 경우 make name_of_test을 실행하여 실행하려는 테스트를 빌드 할 수 있습니다. 이 테스트는 실행되지 않으며 빌드 만됩니다. 테스트 디렉토리가 빌드 된 후 테스트 디렉토리에있을 수 있습니다. 그런 다음 테스트 디렉토리로 가서 실행 파일을 실행하는 일반적인 방법으로 테스트를 실행할 수 있지만 테스트가 라이브러리에 달려있는 경우 테스트에 라이브러리를 추가 할 위치를 지정해야 할 수도 있습니다. LD_LIBRARY_PATH.

자주 수행하려는 작업 인 경우 실행할 특정 테스트 실행을 지원하도록 메이크 파일을 수정해야 할 수 있습니다. 일반적으로 이것은 Makefile.am 또는 Makefile.in을 편집 한 다음 다시 구성해야하지만 편집해야 할 내용을 알려주는 정보가 충분하지 않습니다. 당신이 make check 실행은 다음 쉽게 바로 가기가 테스트를 나열하는 Automake가의 TESTS 변수를 사용하는 경우

+0

'make '를 실행하면, 아무런 인자 없이도 수정 된 테스트를 빌드 할 수 있습니다. 당신이 말했듯이, 나는 정상적인 실행 파일처럼 테스트를 실행할 수 있습니다. 테스트 스위트는 실행에 약간의 시간이 걸렸지 만, 소수의 테스트에만 관심이있을 때는 재미 있지 않습니다. 이 솔루션은 나를 위해 충분합니다. 감사! – palaga