티스토리 뷰
개발 환경 : Mac (Apple Silicon)
사전 준비
Ceedling 을 사용하기 앞서 몇 가지 설치해야 할 것들이 있다.
# ruby 설치
brew install ruby
# gem 설치
brew install brew-gem
# ceedling 설치
gem install ceedling -v 0.30.0
회사에서 사용중인 Ceedling 버전이 0.30.0 이라서 여기서도 해당 버전으로 다루도록 하겠다.
혹시나 최신 버전으로 설치하여 뒤에 설명할 내용과 차이가 발생한다면 아래와 같은 과정으로 다시 설치하길 바란다.
# 설치한 버전 확인
gem list ceedling
# 설치한 버전 삭제
gem uninstall ceedling -v <설치한 버전>
ex) gem uninstall ceedling -v 0.31.0
# 0.30.0 설치
gem install ceedling -v 0.30.0
프로젝트 생성하기
프로젝트 생성은 단순하다. 아래의 명령어를 입력하면 해당 프로젝트 이름으로 폴더가 생성되는 것을 확인할 수 있다. 그리고 폴더 내부에 기본 폴더 구조 (/source, /test/support) 와 설정 파일 (project.yml) 이 생성된 것을 확인할 수 있다.
ceedling new <프로젝트 이름>
ex) ceedling new test
테스트 모듈 생성하기
모듈 생성 또한 단순하다. 아래의 명령어를 입력하면 새 파일들이 src 폴더와 test 폴더 안에 생성되는 것을 확인할 수 있다.
예시에서 module.h 와 module.c 는 실제 시스템에서 동작하는 모듈이고 test_module.c 는 테스트 케이스를 다루는 테스트 파일이다.
ceedling module:create[<module_path>]
ex) ceedling module:create[module]
테스트 케이스 작성하기
이 글에서는 자세한 작성법에 대해서 다루지 않겠다. 추후 Unity 와 CMock 을 설명하는 글에서 다루고자 한다.
예시로 테스트 실행을 위한 간단한 예제 모듈과 테스트 파일을 작성하고자 한다.
우선 src 폴더에 있는 module.h 와 module.c 두 수를 더하는 기능을 구현한다.
//module.h
#ifndef MODULE_H
#define MODULE_H
int sum(int a, int b);
#endif // MODULE_H
// module.c
#include "module.h"
int sum(int a, int b)
{
return a + b;
}
그리고 test 폴더에 있는 test_module.c 테스트 파일에는 더한 값의 결과가 예상한 값과 동일한지 확인하는 테스트 케이스를 작성한다.
// test_module.c
#include "unity.h"
#include "module.h"
void setUp(void)
{
}
void tearDown(void)
{
}
void test_module_sum_ShouldBeReturnCombinedValue(void)
{
int result = 0;
int a = 10;
int b = 20;
result = sum(a,b);
TEST_ASSERT_EQUAL (result, a + b);
}
테스트 실행하기
아래의 명령어들로 테스트를 실행할 수 있으며 그림3과 같은 결과를 확인할 수 있다.
# 단일 테스트 파일만 테스트할 경우
ceedling test:<module_name>
ex) ceedling test:module
# test 폴더 안 모든 테스트 파일을 실행할 경우
ceedling
ceedling test
ceedling test:all
Ceedling 설치부터 테스트 실행까지의 과정이 완료되었다. 테스트 케이스 작성하기에서 잠깐 언급했듯이 Unity, CMock 을 활용하면 더 다양한 테스트 케이스를 작성할 수 있다. 그리고 회사마다 차이가 있겠지만 테스트 케이스 작성할 때 이름을 작성하는 룰 또한 존재한다.
다음에 작성할 글에서는 Unity 에 대해서 다뤄보고자 한다. 기다리기 따분하시다면 https://github.com/ThrowTheSwitch/Ceedling 을 참고하시길 바란다. 앞으로 작성하는 글들은 사실상 Git Hub에 공유된 문서를 번역한 것과 같기 때문이다.
'개발 > TDD' 카테고리의 다른 글
[Tool] VS Code Extentions 로 Ceedling 활용하는 방법 (0) | 2023.09.24 |
---|---|
Unit Test 와 Test Double (0) | 2023.01.28 |