2014-03-04 13 views
6

현재 Atmel Studio 6에 포함 된 C++ 프로젝트를 개발 중입니다.이 프로젝트는 상당히 중요한 임베디드 부분과 중요한 비즈니스 로직 부분을 가지고 있습니다. 이상적으로 비즈니스 로직 코드에 대한 단위 테스트를 실행하고 싶습니다. 이러한 테스트를 편리하게 빌드하고 실행하면 단위 테스트가 더 많이 사용됩니다.Atmel Studio 6의 유닛 테스트 실행

기본 avr-gcc 컴파일러로 Boost unit 테스트를 시도하면 다양한 헤더 파일을 찾을 수 없기 때문에 오류가 발생합니다. 나는이 컨텍스트에서 너무 비싸기 때문에 내가 사용하고있는 AVR 칩셋에 대해 이러한 헤더가 구현되지 않았다는 것을 알고 있습니다. 그러나 이러한 헤더는 비 내장 부품을 테스트하는 데만 사용되므로 전용 유닛 테스트 프로젝트에 배치되었습니다.

단위 테스트를 컴파일하기 위해 다른 컴파일러를 설정해야합니까? 다른 컴파일러 툴체인을 사용하여 단위 테스트를 기본 avr-gcc에 컴파일 할 수 있습니까? 그렇지 않으면 유닛 테스트를 다른 곳에서 컴파일해야합니까? 이 작업을 수행하는 더 쉬운 방법이 있습니까?

+0

이 종류의 IDE를 자동화하기가 쉽지 않으므로 Atmel Studio에서 테스트 당 새로운 프로젝트 (또는 테스트 그룹)로 끝납니다. – Johan

+0

@Johan, 새로운 프로젝트를 만들어야 할 것으로 예상됩니다.AVR 대신 x86 아키텍처로 컴파일하는 유닛 테스트 프로젝트를 얻는 방법을 모르겠습니다. 그렇게하기 위해 외부 메이크 파일을 만들어야합니까? – shuttle87

+0

PC 용 테스트 프레임 워크에는 새로운 "main"및 자체 빌드 타겟/Makefile이 있습니다. – Johan

답변

4

임베디드 소프트웨어를 만들 때 (하드웨어 독립적 인) 비즈니스 로직을 통해 단위 테스트를 작성하고 호스트 x86 아키텍처에서 실행합니다.

나는 일반적으로 당신이 당신의 C++ 논리를 가지고있는 폴더에 액세스하고, 단위 테스트 프레임 워크와 함께 그것을 컴파일 및 테스트 케이스와 더불어, 이클립스 CDT (또는 Qt는 창조주) 같은 소스 트리를 통해 프로젝트를 빌드 x86 아키텍처를 목표로 한 gccEclipse 또는 Qt 작성자이 Makefile을 처리합니다. 부스트 또는 여기에있는 다른 단위 테스트 프레임 워크를 사용할 수 있습니다. 필자는 보통 50 줄의 코드 만 필요로하고 몇 가지 단정 기능 (이 방식으로 최종 AVR 아키텍처에서 동일한 단위 테스트를 사용할 수 있음)을 제공합니다.

일반적으로 AVR 용 임베디드 소프트웨어를 빌드하고 x86 용 유닛 테스트를 작성하고 전달하기 위해 개가 개로 제공되므로 지속적인 통합 패널과 쉽게 통합 할 수 있습니다.

행운을 비네!

1

크로스 플랫폼 프로젝트에서는 두 개 이상의 툴체인 세트가있는 것이 일반적입니다. 플랫폼 중 하나에서 빌드 할 때 문제는 코드가 플랫폼 중 하나에서 올바르게 이식되지 않았 음을 의미합니다 (이 부분을 이미 알고있을 것입니다).

일반적으로 수행하는 작업은 컴파일 타임 스위치를 추가하고 문제 코드를 다시 작성하는 것입니다. 예를 들어 (Win 용 코드에서) 부스트 라이브러리에 대한 참조는 포함 된 대상에서 문제를 일으킬 수 있습니다. 따라서 컴파일 시간, 기계 의존 스위치를 사용하여이를 제거해야합니다. 이 때문에 일부 모듈을 다시 작성해야 할 수도 있습니다. 그러나 다시 말해 플랫폼 간 코드에서 원하는 아키텍처 (예 : 부스트)로 이식되지 않은 타사 라이브러리 라이브러리를 사용하지 않는 이유입니다.

여기에서는 단위 테스트에 대해 이야기하고 있기 때문에 플랫폼에서 실행 중일 때 파일에 출력 결과를 단순히 표시하고 Windows 기반 스크립트/프로그램을 해석하는 것보다 결과 해석 -이 전략 적용 임베디드 플랫폼에서 단위 테스트의 90 % (대부분의 임베디드 프로젝트에서 제공되는 실시간 문제를 해결합니다).

+0

테스트 용 파일 구문 분석에 대한 흥미로운 아이디어. 내가하고있는 일에 대해 실현 가능한 것인지 확실하지 않지만 더 조사 할 것입니다. – shuttle87