it-swarm-ko.tech

단위 테스트 C 코드

저는 이번 여름에 곧바로 작성된 임베디드 시스템에서 일했습니다. 제가 일하는 회사가 인수 한 기존 프로젝트였습니다. 필자는 JUnit을 사용하여 Java에서 단위 테스트를 작성하는 데 익숙해졌지만 기존 코드 (리팩토링이 필요함) 및 시스템에 추가 된 새로운 코드에 대한 단위 테스트를 작성하는 가장 좋은 방법은 손실되었습니다.

예를 들어 JUnit ?를 사용하여 단위 테스트 Java 코드를 쉽게 테스트 할 수있는 방법이 있습니까? 임베디드 개발 (arm-linux 플랫폼으로의 크로스 컴파일)에 특별히 적용 할 수있는 통찰력은 크게 감사 할 것입니다.

805
Paul Osborne

C에서 한 단위 테스트 프레임 워크는 Check ; C의 단위 테스트 프레임 워크 목록은 here 에서 찾을 수 있으며 아래에 재현되어 있습니다. 런타임의 표준 라이브러리 함수 수에 따라 그 중 하나를 사용하거나 사용하지 못할 수 있습니다.

에이스 유닛

AceUnit (Advanced C 및 Embedded Unit)은 편안한 C 코드 단위 테스트 프레임 워크로 청구됩니다. JUnit 4.x를 모방하려고 시도하며 리플렉션 유사 기능을 포함합니다. AceUnit은 자원 제한 환경에서 사용할 수 있습니다 (예 : 임베디드 소프트웨어 개발이 중요하며 단일 표준 헤더 파일을 포함 할 수없고 ANSI/ISO C 라이브러리에서 단일 표준 C 함수를 호출 할 수없는 환경에서 제대로 실행됩니다. 또한 Windows 포트가 있습니다. 저자는 그러한 기능을 추가하는 데 관심을 표명했지만 포크를 사용하여 신호를 포착하지는 않습니다. AceUnit 홈페이지 를 참조하십시오.

GNU 자동 유닛

별도의 주소 공간에서 단위 테스트를 실행하는 포크를 포함하여 Check와 동일한 행을 따라갑니다 (실제로 Check의 원래 작성자는 GNU Autounit에서 아이디어를 빌 렸습니다). GNU Autounit은 GLib를 광범위하게 사용하므로 연결 및 특수 옵션이 필요하지만 특히 GTK 또는 GLib를 이미 사용중인 경우 큰 문제가되지 않을 수 있습니다. GNU Autounit 홈페이지 를 참조하십시오.

c 단위

또한 GLib을 사용하지만 단위 테스트의 주소 공간을 보호하기 위해 분기하지는 않습니다.

C 단위

Win32 GUI 구현 계획이있는 표준 C 현재 단위 테스트의 주소 공간을 포크하거나 보호하지 않습니다. 초기 개발. CUnit 홈페이지 를 참조하십시오.

CuTest

하나의 .c와 하나의 .h 파일을 소스 프레임에 넣는 간단한 프레임 워크입니다. CuTest 홈페이지 를 참조하십시오.

CppUnit

C++를위한 최고의 단위 테스트 프레임 워크. C 코드를 테스트하는 데 사용할 수도 있습니다. 안정적이고 적극적으로 개발되었으며 GUI 인터페이스가 있습니다. C에 CppUnit을 사용하지 않는 주된 이유는 첫 번째가 상당히 크며, 두 번째로 C++로 테스트를 작성해야하므로 C++ 컴파일러가 필요하다는 것입니다. 이것들이 관심사처럼 들리지 않으면 다른 C++ 단위 테스트 프레임 워크와 함께 고려할 가치가 있습니다. CppUnit 홈페이지 를 참조하십시오.

embUnit

embUnit (Embedded Unit)은 임베디드 시스템을위한 또 다른 단위 테스트 프레임 워크입니다. AceUnit이 대체 한 것으로 보입니다. 내장 된 장치 홈페이지 .

MinUnit

최소한의 매크로 만 있으면됩니다! 요점은 코드를 단위 테스트하는 것이 얼마나 쉬운지를 보여주는 것입니다. MinUnit 홈페이지 를 참조하십시오.

안도 씨를위한 CUnit

상당히 새롭고 아직 초기 개발 단계에있는 CUnit 구현입니다. 안도 씨 홈페이지를위한 CUnit 참조.

이 목록은 2008 년 3 월에 마지막으로 업데이트되었습니다.

더 많은 프레임 워크 :

CMocka

CMocka는 모의 객체를 지원하는 C 용 테스트 프레임 워크입니다. 사용 및 설정이 쉽습니다.

CMocka 홈페이지 를 참조하십시오.

표준

Criterion은 자동 테스트 등록, 매개 변수화 된 테스트, 이론을 지원하고 TAP 및 JUnit XML을 포함한 여러 형식으로 출력 할 수있는 크로스 플랫폼 C 단위 테스트 프레임 워크입니다. 각 테스트는 자체 프로세스로 실행되므로 필요한 경우 신호 및 충돌을보고하거나 테스트 할 수 있습니다.

자세한 내용은 Criterion homepage 를 참조하십시오.

허트

HWUT는 C를 크게 지원하는 일반적인 단위 테스트 도구입니다. Makefile을 생성하고, 최소한의 '반복 테이블'로 코딩 된 대규모 테스트 사례를 생성하고, 상태 머신을 따라 걷고, C 스텁을 생성하는 등의 작업을 수행 할 수 있습니다. 일반적인 접근 방식은 매우 독특합니다. 평결은 '좋은 stdout/bad stdout'을 기반으로합니다. 그러나 비교 기능은 유연합니다. 따라서 모든 유형의 스크립트를 사용하여 확인할 수 있습니다. 표준 출력을 생성 할 수있는 모든 언어에 적용 할 수 있습니다.

HWUT 홈페이지 를 참조하십시오.

C 그린

C 및 C++를위한 최신의 휴대용 언어 간 단위 테스트 및 모의 프레임 워크 선택적 BDD 표기법, 조롱 라이브러리, 단일 프로세스에서 실행할 수있는 기능 (디버깅 용이)을 제공합니다. 테스트 기능을 자동으로 감지하는 테스트 러너를 사용할 수 있습니다. 그러나 프로그래밍 방식으로 자신을 만들 수 있습니다.

이러한 모든 기능 (및 그 이상)은 CGreen 매뉴얼 에 설명되어 있습니다.

Wikipedia는 단위 테스트 프레임 워크 목록 : C 에 C 단위 테스트 프레임 워크의 자세한 목록을 제공합니다.

472
Adam Rosenfield

개인적으로 Google Test framework 을 좋아합니다.

C 코드 테스트의 실제 어려움은 외부 모듈에 대한 종속성을 깨뜨 리므로 코드를 단위로 분리 할 수 ​​있습니다. 레거시 코드에 대한 테스트를 시도 할 때 특히 문제가 될 수 있습니다. 이 경우 테스트에서 스텁 함수를 사용하기 위해 링커를 사용하는 경우가 종종 있습니다.

이것이 사람들이 " seams "에 대해 말할 때 언급하는 것입니다. C에서 유일한 옵션은 실제로 전 처리기 또는 링커를 사용하여 종속성을 조롱하는 것입니다.

내 C 프로젝트 중 하나의 일반적인 테스트 스위트는 다음과 같습니다.

#include "myimplementationfile.c"
#include <gtest/gtest.h>

// Mock out external dependency on mylogger.o
void Logger_log(...){}

TEST(FactorialTest, Zero) {
    EXPECT_EQ(1, Factorial(0));
}

실제로는 헤더 파일 이 아닌 C 파일을 포함하고 있습니다. 이렇게하면 모든 정적 데이터 멤버에 액세스 할 수 있다는 이점이 있습니다. 여기서 나는 로거를 모의하고 (logger.o에있을 수 있으며 빈 구현을 제공합니다.) 이것은 테스트 파일이 나머지 코드베이스와 독립적으로 컴파일되고 링크되어 독립적으로 실행됨을 의미합니다.

코드를 크로스 컴파일하는 경우이 기능을 사용하려면 대상에 대한 우수한 기능이 필요합니다. PowerPC 아키텍처에서 Linux로 googletest 크로스 컴파일 하여이 작업을 수행했습니다. 결과를 수집 할 수있는 완전한 셸 및 운영 체제가 있기 때문에 이치에 맞습니다. 덜 풍부한 환경 (전체 OS가없는 것으로 분류)의 경우 호스트에서 빌드하고 실행해야합니다. 어쨌든 빌드의 일부로 테스트를 자동으로 실행할 수 있도록이 작업을 수행해야합니다.

C++ 코드 테스트는 일반적으로 OO 코드가 일반적으로 절차보다 훨씬 덜 결합되어 있기 때문에 훨씬 쉽다는 것을 알았습니다 (물론 이것은 코딩 스타일에 많이 의존합니다). 또한 C++에서는 종속성 주입 및 메서드 재정의와 같은 트릭을 사용하여 캡슐화 된 코드에 이음새를 가져올 수 있습니다.

Michael Feathers는 레거시 코드 테스트에 관한 훌륭한 책 을 가지고 있습니다. 한 장에서 그는 비 OOO 코드를 다루는 기술을 다루는 것이 좋습니다.

Edit : 단위 테스트 절차 코드에 대해 blog post 을 작성했습니다 source to GitHub .

Edit : 실용 프로그래머로부터 나오는 새 책 이 유닛 테스트 C 코드를 구체적으로 다루는 나는 적극 추천한다 .

157
mikelong

Minunit 는 매우 간단한 단위 테스트 프레임 워크입니다. 내가 avr에 대한 단위 테스트 C 마이크로 컨트롤러 코드를 사용하고 있습니다.

128
Matteo Caprari

현재 CuTest 유닛 테스트 프레임 워크를 사용하고 있습니다.

http://cutest.sourceforge.net/

매우 가볍고 단순한 임베디드 시스템에 이상적입니다. 데스크톱뿐만 아니라 대상 플랫폼에서도 문제없이 작업 할 수있었습니다. 단위 테스트를 작성하는 것 외에도 필요한 것은 다음과 같습니다.

  • cuTest 루틴을 호출 할 때마다 헤더 파일이 포함됩니다.
  • 이미지에 컴파일/링크 될 추가 'C'파일 하나
  • 유닛 테스트를 설정하고 호출하기 위해 main에 추가 된 간단한 코드 - 빌드 중에 UNITTEST가 정의되면 컴파일되는 특수 main () 함수에이 코드가 있습니다.

시스템은 힙과 일부 stdio 기능 (모든 임베디드 시스템이 가지는 것은 아닙니다)을 지원해야합니다. 그러나 코드가 간단하여 플랫폼에없는 경우 해당 요구 사항 대신 사용할 수 있습니다.

Extern "C"{} 블록을 적절하게 사용하면 C++ 테스트도 지원합니다.

40
Michael Burr

나는 ratkok과 거의 똑같은 말을하지만, 만약 당신이 unit test에 twist가 있다면 ...

Unity - 단위 테스트 C 코드 용으로 권장되는 프레임 워크.

이 스레드에서 언급 된 책의 예 임베디드 C 용 TDD 는 Unity (및 Cpputest)를 사용하여 작성됩니다.

36
Johan

Test Anything Protocol (TAP)을 출력하는 C 테스팅 프레임 워크 인 libtap 을 살펴보고이 기술을 위해 제공되는 다양한 도구와 잘 통합 할 수도 있습니다. 주로 동적 언어 세계에서 사용되지만 쉽게 사용하고 매우 인기가 있습니다.

예 :

#include <tap.h>

int main () {
    plan(5);

    ok(3 == 3);
    is("fnord", "eek", "two different strings not that way?");
    ok(3 <= 8732, "%d <= %d", 3, 8732);
    like("fnord", "f(yes|no)r*[a-f]$");
    cmp_ok(3, ">=", 10);

    done_testing();
}
32
Ovid

cmocka 라고하는 mock 객체를 지원하는 C를위한 우아한 단위 테스트 프레임 워크가 있습니다. 표준 C 라이브러리 만 필요하며 다양한 컴퓨팅 플랫폼 (임베디드 포함) 및 다양한 컴파일러에서 작동합니다.

또한 Subunit, Test Anything Protocol 및 jUnit XML 보고서와 같은 다양한 메시지 출력 형식을 지원합니다.

cmocka는 임베디드 플랫폼에서도 작동하도록 만들어졌으며 Windows 지원도 제공합니다.

간단한 테스트는 다음과 같습니다.

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>

/* A test case that does nothing and succeeds. */
static void null_test_success(void **state) {
    (void) state; /* unused */
}

int main(void) {
    const struct CMUnitTest tests[] = {
        cmocka_unit_test(null_test_success),
    };
    return cmocka_run_group_tests(tests, NULL, NULL);
}

API 은 완전히 문서화되었으며 몇 가지 예가 소스 코드의 일부입니다.

Cmocka를 시작하려면 LWN.net의 기사를 읽어야합니다. 모의 객체로 단위 테스트 _

cmocka 1.0은 2015 년 2 월에 출시되었습니다.

26
asn

함수를 모의 할 방법을 찾기 시작하기 전에 레거시 C 응용 프로그램을 멀리 테스트하지 않았습니다. 나는 다른 사람들로부터 테스트하고 싶은 C 파일을 분리하기 위해 조롱을 필요로했다. 나는 cmock에게 시도를 주었고 나는 그것을 채택 할 것이라고 생각한다.

Cmock은 헤더 파일을 스캔하고 발견 된 프로토 타입을 기반으로 mock 함수를 생성합니다. 모의 파일을 사용하면 C 파일을 완벽하게 분리하여 테스트 할 수 있습니다. 실제 파일 대신 모의 파일과 테스트 파일을 연결하기 만하면됩니다.

Cmock의 또 다른 이점은 조롱 된 함수에 전달 된 매개 변수의 유효성을 검사하고 모의 객체가 제공해야하는 반환 값을 지정할 수 있다는 것입니다. 이는 함수에서 다른 실행 흐름을 테스트하는 데 매우 유용합니다.

테스트는 기대치를 세우고, 테스트 할 함수를 호출하고, 어설 션을 확인하는 일반적인 testA (), testB () 함수로 구성됩니다.

마지막 단계는 일치 테스트를 위해 러너를 생성하는 것입니다. Cock은 단일성 테스트 프레임 워크에 묶여있다. Unity는 다른 단위 테스트 프레임 워크만큼 배우기 쉽습니다.

시도할만한 가치가 있고 이해하기 쉽습니다.

http://sourceforge.net/apps/trac/cmock/wiki

업데이트 1

조사중인 또 다른 프레임 워크는 Cmockery입니다.

http://code.google.com/p/cmockery/

이것은 단위 테스트와 조롱을 지원하는 순수한 C 프레임 워크입니다. Ruby에 대한 의존성이 없으며 (Cmock과는 반대) 외부 libs에 거의 의존하지 않습니다.

코드 생성을하지 않기 때문에 모의 객체를 설정하기 위해서는 좀 더 수동 작업이 필요합니다. 프로토 타입이 많이 변경되지 않으므로 기존 프로젝트에 많은 작업이 필요하지 않습니다. 일단 모의 작업을 수행하면 잠시 동안 변경하지 않아도됩니다 (이것이 내 경우 임). 여분의 타이핑은 모의를 완벽하게 제어합니다. 너가 싫어하는 것이 있으면, 너는 너의 mock을 간단하게 바꾼다.

특별한 테스트 러너가 필요 없습니다. 테스트 배열을 만들어 run_tests 함수에 전달하기 만하면됩니다. 여기서도 좀 더 수동 작업이 가능하지만 자급 자족 프레임 워크에 대한 아이디어는 분명 좋습니다.

게다가 그것은 내가 모르는 멋진 C 트릭을 포함하고있다.

전반적인 Cmockery는 시작하기 위해 mock을 조금 더 이해해야합니다. 예제가이를 극복하는 데 도움이됩니다. 간단한 메커니즘으로 작업을 수행 할 수있는 것 같습니다.

20
Philippe A.

C 초보자로서, 나는 C에서 테스트 중심 개발 매우 도움이되는 슬라이드를 발견했습니다. 기본적으로 &&와 함께 표준 assert()을 사용하여 외부 종속성없이 메시지를 전달합니다. 만약 누군가가 전체 스택 테스팅 프레임 워크에 익숙하다면, 아마도 이렇게되지 않을 것입니다. :)

15
chelmertz

나는 프레임 워크를 사용하지 않고 autotools의 "check"타겟 지원 만 사용한다. "main"을 구현하고 assert (s)를 사용하십시오.

내 테스트 디렉토리 Makefile.am (s)은 다음과 같습니다.

check_PROGRAMS = test_oe_amqp

test_oe_amqp_SOURCES = test_oe_amqp.c
test_oe_amqp_LDADD = -L$(top_builddir)/components/common -loecommon
test_oe_amqp_CFLAGS = -I$(top_srcdir)/components/common -static

TESTS = test_oe_amqp
12
navicore

CUnit

그리고 Embedded Unit 는 Embedded C System의 단위 테스트 프레임 워크입니다. JUnit과 CUnit 등에서 복사 된 디자인은 Embedded C System을 위해 다소 변형되었습니다. 임베디드 유닛에는 표준 C 라이브러리가 필요하지 않습니다. 모든 객체는 const 영역에 할당됩니다.

그리고 Tessy 는 임베디드 소프트웨어의 단위 테스트를 자동화합니다.

12
prakash

쉬운 사용 성과 이식성을 위해 CHEAT ( GitHub 에서 호스팅했습니다.

종속성이 없으며 설치 또는 구성이 필요 없습니다. 헤더 파일과 테스트 케이스 만 있으면됩니다.

#include <cheat.h>

CHEAT_TEST(mathematics_still_work,
    cheat_assert(2 + 2 == 4);
    cheat_assert_not(2 + 2 == 5);
)

테스트는 테스트를 실행하고 결과를보고하는 실행 파일로 컴파일됩니다.

$ gcc -I . tests.c
$ ./a.out
..
---
2 successful of 2 run
SUCCESS

그것은 너무 예쁜 색깔을 가지고 있습니다.

12
Tuplanolla

마이클 페더 (Michael Feather)의 "Working With Effective With Legacy Code"는 C 개발 과정에서의 단위 테스팅과 관련된 많은 기술을 제공합니다.

C에 특정한 의존성 주입과 관련된 기술이 있습니다.

11
Frank Schwieterman

CppUTest - C 코드의 단위 테스트 용으로 권장되는 프레임 워크.

이 스레드에서 언급 된 책의 예 임베디드 C 용 TDD 는 CppUTest를 사용하여 작성됩니다.

7
ratkok

내 명백한 편견 이외

http://code.google.com/p/seatest/

유닛 테스트 C 코드에 대한 간단한 간단한 방법입니다. xUnit을 모방하다.

6
Keith Nicholas

나는 CxxTest 를 임베디드 c/c ++ 환경 (주로 C++)에 사용합니다.

테스트 주자를 빌드하는 Perl/python 스크립트가 있기 때문에 CxxTest를 선호합니다. 테스트 슬로프를 설정 한 후 (테스트 러너를 쓸 필요가 없으므로 여전히 작음) 사용하기 쉽습니다 (샘플 및 유용한 문서 포함). 가장 많은 작업은 코드 액세스에 필요한 '하드웨어'를 설정하는 것이므로 단위/모듈 테스트를 효과적으로 수행 할 수있었습니다. 그 후에 새로운 단위 테스트 케이스를 추가하는 것은 쉽습니다.

앞서 언급했듯이 이것은 C/C++ 유닛 테스트 프레임 워크입니다. 따라서 C++ 컴파일러가 필요합니다.

CxxTest 사용자 가이드CxxTest Wiki

6
Zing-

Minunit을 읽은 후에 나는 더 나은 방법이 수비 프로그램 기술처럼 많이 사용하는 assert 매크로를 기반으로 테스트를한다고 생각했습니다. 그래서 저는 Minunit과 같은 생각을 표준 주장과 섞어 사용했습니다. k0ga의 블로그 )에서 내 프레임 워크 (좋은 이름은 NoMinunit이 될 수 있음)

Google에는 우수한 테스트 프레임 워크가 있습니다. https://github.com/google/googletest/blob/master/googletest/docs/primer.md

그리고 예, 내가 볼 수있는 한 평범한 C로 작동합니다. 즉 C++ 기능이 필요하지 않습니다 (C++ 컴파일러가 필요할 수도 있음).

4
Paweł Hajdan
4
Landon Kuhn

Cmockery 는 단위 테스트를 작성하는 데 C 라이브러리를 사용하는 매우 간단한 프로젝트로 구성된 최근에 시작한 프로젝트입니다.

4
Alejandro Bologna

먼저 여기를보십시오 : http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C

우리 회사는 고객이 사용하는 C 라이브러리를 가지고 있습니다. CxxTest (C++ 단위 테스트 라이브러리)를 사용하여 코드를 테스트합니다. CppUnit도 작동합니다. C에 갇혀 있다면 RCUNIT (하지만 CUnit도 좋습니다)를 권하고 싶습니다.

3
Kevin
2
Tony Bai

API Sanity Checker - C/C++ 라이브러리 용 테스트 프레임 워크 :

공유 C/C++ 라이브러리의 기본 단위 테스트 자동 생성기. API의 입력 데이터를 합리적 (대부분 불행히도 모든 경우는 아님)으로 생성 할 수 있으며 헤더의 선언 분석을 통해 API의 모든 함수에 대한 간단한 ( "온전한"또는 "얕은"품질) 테스트 케이스를 작성할 수 있습니다 파일.

생성 된 테스트의 품질로 인해 간단한 사용 사례에서 치명적인 오류가 없는지 확인할 수 있습니다. 이 도구는 생성 된 테스트를 빌드하고 실행하며 충돌 (segfaults), 중단, 모든 종류의 방출 된 신호, 0이 아닌 프로그램 리턴 코드 및 프로그램 정지를 감지 할 수 있습니다.

예 :

2
linuxbuild

필자는 RCUNIT 를 사용하여 대상에서 테스트하기 전에 PC에 내장 코드에 대한 단위 테스트를 수행했습니다. 엔디안과 메모리 맵 레지스터가 당신을 죽일 것이라는 점을 감안할 때 하드웨어 인터페이스 추상화가 중요합니다.

2
Gerhard

JUnit에 익숙하다면 CppUnit을 추천합니다. http://cppunit.sourceforge.net/cppunit-wiki

그게 당신이 단위 테스트를 할 C + + 컴파일러가 있다고 가정합니다. 그렇지 않다면 Adam Rosenfield와 동의해야합니다. 수표는 당신이 원하는 것입니다.

2
Kwondri

LibU ( http://koanlogic.com/libu )에는 명시 적 테스트 스위트/케이스 종속성, 테스트 격리, 병렬 실행 및 사용자 정의 가능한 보고서 형식 기 (기본 형식은 xml 및 txt 임)를 허용하는 단위 테스트 모듈이 있습니다.

라이브러리는 BSD 라이선스가 있으며 네트워킹, 디버깅, 일반적으로 사용되는 데이터 구조, 구성 등 유용한 모듈이 많이 포함되어 있습니다.

1
bongo

Cutter (http://cutter.sourceforge.net/) 아무도 언급하지 않은 것에 놀랐습니다. C와 C++를 테스트 할 수 있으며 autotools와 완벽하게 통합되며 실제로 사용 가능한 멋진 자습서가 있습니다.

1
Kris

한 가지 기술은 대상 시스템의 소스를 C 모듈로 유지하면서 C++ xUnit 프레임 워크 (및 C++ 컴파일러)를 사용하여 단위 테스트 코드를 개발하는 것입니다.

가능하다면 자동으로 유닛 테스트와 함께 크로스 컴파일러에서 C 소스를 컴파일해야합니다.

1
quamrana

테스트 프레임 워크를 계속 찾고 있다면 CUnitWin32 는 Win32/NT 플랫폼 용입니다.

이것은 다른 테스트 프레임 워크에서 직면 한 하나의 근본적인 문제를 해결합니다. 즉, 글로벌/정적 변수는 각 테스트가 별도의 프로세스로 실행되기 때문에 결정적 상태에 있습니다.

0
Dushara

Win32 플랫폼이나 NT 커널 모드를 목표로 할 경우, cfix 를 봐야합니다.

0
Johannes Passing

방금 썼다 Libcut 기존의 C 유닛 테스트 라이브러리에 대한 좌절감에서. 그것은 자동 타입 스트링을 가지고 있습니다. (test_eq_int, test_eq_long, test_eq_short 등은 필요 없으며, 원시와 문자열을위한 두 개의 다른 세트 만 있습니다.) 하나의 헤더 파일로 구성됩니다. 다음은 간단한 예입니다.

#include <libcut.h>

LIBCUT_TEST(test_abc) {
    LIBCUT_TEST_EQ(1, 1);
    LIBCUT_TEST_NE(1, 0);
    LIBCUT_TEST_STREQ("abc", "abc");
    LIBCUT_TEST_STRNE("abc", "def");
}

LIBCUT_MAIN(test_abc);

C11에서만 작동합니다.

0
kirbyfan64sos