2011-03-09 4 views
0

CPPUnit을 사용하여 C 코드에 대한 단위 테스트를하고 있습니다.CPPUnit 액세스가 C 파일로 정의됩니다.

테스트 할 코드에는 h 파일이 아니라 c 파일에 정의되어 있습니다. 따라서 그들은 코드의 다른 장소에서 액세스 할 수 없습니다. 많은 정의가 배열의 크기를 설정하는 데 사용됩니다.

단위 테스트를 수행 할 때 최종 릴리스 이전에 정의가 변경된 경우에도 여전히 작동 할 수 있도록 가능한 한 역동적으로 만들고 싶습니다. 배열을 사용하여 함수를 수행하기 위해 루프와 물건을 만들었으므로 배열에 항목이있는 것처럼 여러 번 테스트합니다.하지만 지금까지는 유닛 테스트 코드에서 정의 사본을 사용합니다. 따라서 정의가 테스트 할 코드에서 변경되면 단위 테스트 코드에서 변경되지 않습니다.

내 주된 질문은 단위 테스트 용도로만 사용할 수있는 트릭이 있다면 어떻게 든 단위 테스트를 사용하기 위해 원래 소스 코드를 변경하지 않고 전역 또는 무엇인가를 정의하는 것입니다. 아마 컴파일러 설정? (저는 Visual Studio 2008을 사용하고 있습니다).

+1

단순히 C 파일을 포함하면 어떨까요? '#include "myfile.c"'그것이 효과가 있습니까? –

+0

또한 VS에 대해서는 잘 모르겠지만 Clang과 GCC에서는'-D = '컴파일러 플래그를 사용할 수 있습니다. –

+0

코드를 올바르게 작성하고 정의 된 위치를 헤더 파일에 넣는 것이 어떻습니까? –

답변

0

아니요. .c 파일에 #define을 "global"로 만들면 다른 C 파일에도 적용될 수 있습니다. 소스를 변경하지 않고 정적 기능을 전역으로 만들 수있는 것 이상이면 불가능합니다. 이를 수행하는 방법은 소스를 변경하여 인터페이스가 정의 된 헤더 파일에 속하는 곳의 #define을 넣는 것입니다.

=== .c 파일을 보내고 #include의 아이디어 라덱 S에 편집 ===

신용. 이는 적용 가능성이 제한되어 있지만 테스트 실행 파일을 만들 때 원래 파일이 컴파일되지 않는다면 해당 파일에서 함수의 단위 테스트를 위해 작동해야합니다.