greatestC 單元測(cè)試工具
greatest 是一個(gè) C 語(yǔ)言的單元測(cè)試系統(tǒng),只需要一個(gè)文件支持。示例代碼:
$ cat simple.c
#include "greatest.h"
TEST x_should_equal_1() {
int x = 1;
ASSERT_EQ(1, x); /* default message */
ASSERT_EQm("yikes, x doesn't equal 1", 1, x); /* custom message */
PASS();
}
SUITE(the_suite) {
RUN_TEST(x_should_equal_1);
}
/* Add definitions that need to be in the test runner's main file. */
GREATEST_MAIN_DEFS();
int main(int argc, char **argv) {
GREATEST_MAIN_BEGIN(); /* command-line arguments, initialization. */
RUN_SUITE(the_suite);
GREATEST_MAIN_END(); /* display results */
}
$ make simple && ./simple
cc -g -Wall -Werror -pedantic simple.c -o simple
* Suite the_suite:
.
1 tests - 1 pass, 0 fail, 0 skipped (5 ticks, 0.000 sec)
Total: 1 tests (47 ticks, 0.000 sec)
Pass: 1, fail: 0, skip: 0.
主要特點(diǎn)
-
小巧,輕便
除了ANSI C89以外,最大的功能不依賴(lài)任何內(nèi)容,并且使用編譯時(shí),測(cè)試腳手架應(yīng)該在沒(méi)有警告的情況下構(gòu)建
-Wall -Wextra -pedantic。它低于1,000 LOC(SLOCCount),并且沒(méi)有動(dòng)態(tài)分配。 -
許可許可
最大的是根據(jù)ISC許可證發(fā)布的。您可以自由使用它,甚至可以用于商業(yè)目的。
-
易于設(shè)置
要使用,僅
#include "greatest.h"在您的項(xiàng)目中。樣板非常少。大多數(shù)功能是可選的。 -
不自以為是
當(dāng)命令行測(cè)試運(yùn)行器有用時(shí),Greatest可以提供一個(gè),但是它也可以作為其他程序的一部分運(yùn)行。它不依賴(lài)于特定的構(gòu)建系統(tǒng)或其他工具,而應(yīng)適應(yīng)各種測(cè)試方法。它積極避免在測(cè)試代碼上施加體系結(jié)構(gòu)選擇。盡管在設(shè)計(jì)C時(shí)考慮到C語(yǔ)言是最偉大的,但是它試圖從C ++中使用。
-
模塊化的
測(cè)試可以單獨(dú)運(yùn)行,也可以分組進(jìn)行。套件可以共享通用設(shè)置,并且可以位于不同的編譯單元中。
-
低摩擦
可以按名稱(chēng)運(yùn)行特定的測(cè)試或套件,以在開(kāi)發(fā)過(guò)程中進(jìn)行集中且快速的迭代。最大的好處是幾乎沒(méi)有啟動(dòng)延遲。
有一些編譯時(shí)選項(xiàng),如果使用C99或更高版本的語(yǔ)言標(biāo)準(zhǔn)進(jìn)行編譯,則用于參數(shù)測(cè)試(使用參數(shù)運(yùn)行測(cè)試)的語(yǔ)法會(huì)稍微好一些。
一篇博客文章, 提供了更多信息。雖然已有數(shù)年的歷史,但主要功能仍是準(zhǔn)確的。
盜竊案(一個(gè)相關(guān)項(xiàng)目)增加了基于屬性的測(cè)試。
