메뉴 건너뛰기


단위 테스팅 도구 for C/C++


이 페이지는 소프트웨어 공학을 지원하는 도구 중 단위 테스트(Unit Test) 단계에서 C및 C++ 테스팅을 지원하는 도구에 대한 소개 및 정보를 공유하기 위해 작성되었다. 


API Sanity AutoTest
  • 개발사 :  
  • 설명 : API Sanity AutoTest는 C/C++ 라이브러리들을 위해 기본 유닛 테스트를 자동 생성한다. 이는 헤더 파일의 선언을 분석하여 API의 모든 함수를 위해 입력데이터 파라미터와 간단한 조합의 테스트 케이스를 생성할 수 있다. API Sanity AutoTest는 생성된 테스트를 빌드 및 실행할 수 있으며, craches, aborts, 모든 종류의 emitted signal, non-zero 프로그램 return 코드, 프로그램 행깅(hanging) 감지가 가능하다. 
  • 라이센스 : LGPL
  • 링크 : https://github.com/lvc/api-sanity-checker/
  • 요구사항 : 
    • Linux, FreeBSD
      • ABI Compliance Checker
      • G++
      • GNU Binutils
      • Perl 5
      • Ctags
    • Mac OS X
      • ABI Compliance Checker
      • Xcode
      • Ctags
    • MS Windows
      • ABI Compliance Checker
      • MinGW
      • MS Visual C++
      • Active Perl 5
      • Ctags
      • Add too locations to the PATH environment variable
      • Run vsvars32.bat script

 

BMOCK
  • 개발사 :  
  • 설명 :
    • BMOCK은 Mock Objects를 지원하는 C++ 라이브러리이다.
    • C 함수와 멤버 함수(Constructor, Destructor 포함)를 위한 Mocks을 만들 수 있다.
    • strict mock과 non-strict mock 지원
    • IN, OUT, IN_OUT 인자, special treatment for raw memory 지원
  • 라이센스 : GNU Lesser GPL
  • 링크 : https://code.google.com/p/bmock/
  • 요구사항 :
    • BMOCK은 Boost 테스트 라이브러리와 함께 사용되며 Boost 라이브러리들이 필요하다.  
    • Visual C++ 10.0/11.0, GCC, Clang


C Unit Test System
  • 개발사 : Hans Yin
  • 설명 : 
    • CUT(C Unit Test)는 간단하고 to-the-point 유닛테스트 시스템이다.  
    • CUT는 다른 유닛테스트 패키지와 달리, KISS 원리에 따른다. 
    • C 테스팅을 위해 디자인 되었고 SUnit을 에뮬레이트하기 위해 디자인되지 않았다.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 : http://sourceforge.net/projects/cut/


cfix
  • 개발사 : cfix
  • 설명 : 
    • cfix는 C/C++ xUnit과 같은 테스트케이스들을 작성하고 실행하는 프레임워크이다.
    • 이 도구는 JUnit 혹은 NUnit 처럼 개발과 매우 비슷한 프레임워크를 제공하기 위한 도구이다. 
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 : http://www.cfix-testing.org/unit-testing-framework/windows/

Check
  • 개발사 : Check
  • 설명 :
    • Check는 C언어를 위한 유닛테스트 라이브러리이다. 
    • Check는 유닛테스트 정의를 위해 간단한 인터페이스를 제공한다. 
    • 테스트는 별도의 어드레스 공간에서 실행된다. 세그먼테이션 오류 혹은 시그널 캐치와 같은 코드에러와 장애를 확인할 수 있다. 
  • 라이센스 : LGPL
  • 링크 : http://check.sourceforge.net/
  • 요구사항 : POSIX


CMock
  • 개발사 :  ThrowTheSitch
  • 설명 :
    • CMock은 C 헤더로부터 자동으로 Mock과 Stub을 생성한다.
    • 호출되기를 기대하는 특정 함수와 호출 시 기대되는 인자값을 기술할때 CMock을 사용할 수 있다.
    • 테스트 시 중요하지 않은 함수 호출은 예외 처리할 수 있다.
  • 라이센스 : MIT License
  • 링크 : https://mark-vandervoord-yxrv.squarespace.com/cmock
  • 요구사항 : Any platform supporting Ruby and C


CppTest
  • 개발사 : CppTest
  • 설명 : 
    • CppTest는 C++의 자동화된 테스트를 핸들링하는 강하고 간단하고 이식성이 좋은 유닛테스팅 프레임워크이다.
    • CppTest는 사용성과 확장성에 초점이 맞추어져 있다.
    • 간단한 Text로 출력, 컴파일러아 같은 출력, HTML 출력의 몇몇 출력 포멧이 지원되며, 새로운 포멧도 쉽게 추가할 수 있다. 
  • 라이센스 : GNU Lesser General Public License(LGPL)
  • 링크 : 
    • http://cpptest.sourceforge.net/
    • http://sourceforge.net/projects/cpptest/


CppUnit
  • 개발사 : 
  • 설명 : CppUnit is the C++ port of the famous JUnit framework for unit testing. Test output is in XML or text format for automatic testing and GUI based for supervised tests.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : BeOS, MacOS, Windows, OS Independent, Linux


CPUnit
  • 개발사 : 
  • 설명 : CPUnit is a unit test framework for C++ applications and programs. It is very much inspired by the elegance of JUnit, althoug, since C++ is a language quite different from Java, both the implementation and the way tests are written differ. (For instance, tests in CPUnit are never encapsulated in a class, but rather a namespace). The similarity is in the ease of use, the minimality of coding required to write good tests and user friendly command line options for test execution.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


CU
  • 개발사 : 
  • 설명 : CU is simple and portable unit testing framework for handling automated tests in C. CU features a simple interface for defining unit tests and run regression tests.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Unix


CUnit
  • 개발사 : 
  • 설명 : CUnit is a lightweight system for writing, administering, and running unit tests in C. It provides C programmers a basic testing functionality with a flexible variety of user interfaces.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


CUnitWin32
  • 개발사 : Hans Yin
  • 설명 : Macro based, lean C/C++ unit testing framework for the Win32 platform. Each test is executed as a separate process providing a completely isolated environment (think static variables).
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Windows


CUnitWin32
  • 개발사 : 
  • 설명 : CUnitWin32 is a C/C++ unit testing framework for Microsoft Windows. It's a minimalistic system that with truly independent tests (e.g. global/static variables are initialised between tests).
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Windows


cutee
  • 개발사 : 
  • 설명 : C++ unit testing environment that makes it really easy to create and run tests of a library or application. It will automatically generate Makefiles, runner classes (classes that execute test functions), and main test application code. It will also automatically update Makefiles and support classes whenever you add new test functions or modify old ones.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : UNIX


CUTest
  • 개발사 : 
  • 설명 : CuTest는 C언어를 위한 단위 테스트 라이브러리이다.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


CxxTest
  • 개발사 : Hans Yin
  • 설명 : CxxTest is a JUnit/CppUnit/xUnit-like framework for C++. Its advantages over existing alternatives are that it doesn't require RTTI, doesn't require member template functions, doesn't require exception handling, doesn't require any external libraries (including memory management, file/console I/O, graphics libraries) and is distributed entirely as a set of header files. This makes it extremely portable and usable.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


Embedded Unit
  • 개발사 : 
  • 설명 : Unit testing framework for Embedded C System. Its design was copied from JUnit and CUnit and more, and then adapted somewhat for Embedded C System.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


GUNit
  • 개발사 : 
  • 설명 : GUNit is a C unit testing framework in the spirit of JUnit. The framework incorporates an easy to use GUI based on the Gnome libraries.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Linux


Hippo Mocks
  • 개발사 : 
  • 설명 : Hippo Mocks is a very intuitive mocking framework that "just works". The design goals are to have the least amount of complexity in setting up, the least amount of surplus code to maintain, the most readable unit tests and the most portable way to do all of those.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크  :
  • 요구사항 : GCC/MSVC/Comeau


LibU
  • 개발사 : 
  • 설명 : LibU is a multiplatform C utility library that contains a module for Unit testing of C/C++ programs. The u_test module supports explicit test suite/case dependency; parallel execution and sandboxing of test cases; xml, txt and custom output format for reporting.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : GNU/Linux *BSD QNX Solaris Windows (Cygwin/MinGW)


MIN Test Framework
  • 개발사 : 
  • 설명 : MIN is an advanced unit/integration test framework for Linux/Maemo based devices. MIN can be integrated with standard toolchain in Linux (make). It makes testing easy, efficient and what is most important: rapid.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Linux/Maemo i386/ARM


Moxy
  • 개발사 :
  • 설명 : Moxy generates mock objects on the fly from C++ header files. Mock objects allow interaction-based unit testing and can improve object decoupling.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Most any platform with Python and a C++ compiler


ObjcUnit
  • 개발사 : 
  • 설명 : ObjcUnit is a unit testing framework for Objective-C on Mac OS X. Its design was copied from JUnit, written by Erich Gamma and Kent Beck, and then adapted somewhat for Objective-C. It also has support for mock objects, adapted from the Java Mock Objects framework.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Mac OS X


OCUnit
  • 개발사 : 
  • 설명 : OCUnit is a testing framework for Objective C in the Mac OS X, GNUSTEP and other environments. It is based on the original SUnit framework of Kent Beck, but also include a JUnit like API. Test suites are automatically created at runtime. On Mac OS X it provides full integration with the XCode IDE: tests can be run after each compilation and failures and errors are reported in the build panel.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Mac OS X, GNUstep, OPENSTEP or WebObjects 4


QtUnit
  • 개발사 : 
  • 설명 : QtUnit is a unit testing framework for C++ which compiles into a shared library. It uses the Qt library for platform independence. Tests can be compiled into modules which are automatically reloaded after modification. The text and graphical testrunners are fully localized and integrate perfectly into IDEs for the display of the exact source location where failures occurred.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Qt 3.0


RCUnit
  • 개발사 : 
  • 설명 : RCUNIT stands for Robust C Unit. It is a small framework for testing C programs. Similar to other unit testing frameworks, RCUNIT is a framework used for creating repeatable tests.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


simplectest
  • 개발사 : 
  • 설명 : Aims to be a simple but effective testing framework for C and C++ projects, without having too much overhead.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Cygwin (MS Windows), OS Portable


Splint
  • 개발사 : 
  • 설명 : Splint is a tool for statically checking C programs for coding errors and security vulnerabilities. If effort is invested adding annotations to programs, Splint can perform stronger checking than is possible with traditional lints.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Win32, Solaris, Linux, FreeBSD


Test soon
  • 개발사 : 
  • 설명 : "Test soon" is a testing framework trying to enable you to write tests quickly, organize them easily and still being flexible. Tests can be grouped automatically by file name and in nested groups.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


TestKit
  • 개발사 : 
  • 설명 : Testing framework for Mac OS X and the Objective-C language. Includes testing framework, developer tool integration, easy test organization and packaging, GUI Test Runner, and a command-line version for test automation. Modelled after JUnit, but targets the specific needs of the OS X developer in the Cocoa environment.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : MacOS X

Turtle
  • 개발사 : Hans Yin
  • 설명 : Turtle is a C++ mock object library based on Boost with a focus on usability, simplicity and flexibility.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :


TUT
  • 개발사 : 
  • 설명 : TUT simplifies tests organization and provides basic framework to run them. All developers have to do is to fill tests bodies with the actual test code.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : C++


Unit--
  • 개발사 : 
  • 설명 : A light-weight C++ unit test framework that uses templates and macros. No perl, etc. Supports custom output message formats to make your IDE or editor happy.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Any C++ compiler


UnitTest
  • 개발사 : Hans Yin
  • 설명 : UnitTest was developed on the principle of keeping things simple as possible.To that point, the source code testing framework was made to allow the developer to easily write white/grey-box unit test cases. To make life easier, I also created a utility that generates unit test class source code. The entire project is really tiny and is designed to build and run out of the box! You should be able to get going within 5 mins. I have also provided two sample projects for you to play with in the package.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Windows


UnitTest++
  • 개발사 : Hans Yin
  • 설명 : UnitTest++ is a unit testing framework for C++ designed for simplicity and portability. Features include no explicit test registration, good crash handling, fixtures, rich condition-checking functionality, minimal footprint for embedded environments.
  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 :
  • 요구사항 : Win32, Linux, Mac OS X


Unity
  • 개발사 : ThrowTheSwitch
  • 설명 : 
    • Unity는 10%% 순수 C코드로 작성되었다. Unity는 대부부의 임베디드 컴파일러를 지원하는 ANSI 표준을 따른다. 
    • 8bit부터 64bit 마이크로프로세서 까지 동일한 테스트 실행 방법을 제공한다. 

  • 라이센스 : GNU General Public License version 2.0 (GPLv2)
  • 링크 : 
    • https://mark-vandervoord-yxrv.squarespace.com/unity
    • https://github.com/ThrowTheSwitch/Unity