C 트랙의 테스트

Exercism에서 C 연습 문제를 테스트하는 방법을 배워봐요


각 연습 문제는 단위 테스트와 Make 빌드 레시피를 함께 제공해요. 구현은 직접 작성하면 돼요.

각 테스트 파일은 구현과 링크되어, 테스트를 실행하는 콘솔 실행 파일을 만들어요. 테스트 실행 파일을 실행하면 실패한 각 테스트에 대한 메시지를 출력하고, 테스트가 실패하면 0이 아닌 종료 상태를 보고해요.

연습 문제를 풀려면:

  • Make로 초기 빌드를 만들어요
  • 각 단위 테스트마다:
    • TEST_IGNORE() 줄을 지워요.
    • 컴파일 오류를 해결해서 테스트가 실패하도록 만들어요.
    • 테스트를 통과시킬 만큼만 구현해요.
    • 가독성을 높이고 중복을 줄이는 등, 구현을 리팩터링해요.

테스트 컴파일하고 실행하기

각 연습 문제에는 단위 테스트가 담긴 .c 파일과 함께 makefile 파일이 있어요. Make 파일은 따로 수정할 필요가 없어요. 제공된 Make 파일은 구현이 연습 문제 이름을 딴 헤더 파일(.h)과 소스 파일(.c)로 존재한다고 가정해요.

예를 들어 bob 연습 문제는 bob.h와 bob.c에 구현이 있을 것이라 기대해요. 이름에 하이픈이 들어간 연습 문제는 소스 파일에서 밑줄을 쓴다고 가정해요. 그래서 word-count는 word_count.h와 word_count.c를 기대해요. 구현이 충분히 단순해서 헤더에만 담아도 된다고 판단되면, .c 파일은 생략해도 돼요.

Make를 실행하기 전에 구현 파일을 먼저 만들어 두세요. bob 연습 문제에서 Make를 실행할 때 bob.h와 bob.c 파일이 없으면, Make가 파일을 찾을 수 없다는 오류를 내요. 이 파일들은 비어 있어도 되지만, 반드시 존재해야 해요.

코드 빌드하기

코드를 빌드하는 가장 간단한 방법은 명령줄(CLI)에서 make를 사용하는 거예요. Linux에서는 bash나 그와 비슷한 셸에서 CLI를 사용할 수 있고, MacOS에서는 Terminal을 사용해요. Windows 10에서는 Linux용 Windows 하위 시스템(WSL)의 Bash를 사용할 수 있어요.

이렇게 하려면, 현재 디렉터리가 연습 문제 폴더라고 가정하고:

$ make

이 명령은 코드를 컴파일하고 테스트를 실행해요.

makefile에는 메모리 누수와 배열 범위를 벗어난 접근 같은 흔한 실수를 검사하는 빌드도 들어 있어요. 이 검사를 실행하려면 명령줄에서 다음을 사용해요:

$ make memcheck

정리하기

빌드 후 정리하려면, make에게 실행 파일을 포함한 모든 빌드 결과물을 삭제하라고 하면 돼요:

$ make clean

MacOS에서의 다른 빌드 방법

MacOS에서는 Xcode를 사용할 수도 있어요. 코드를 빌드하려면 툴바에서 _Build_를 선택해요.