1. 程式人生 > >unity自動化測試框架

unity自動化測試框架

unity官網 http://www.throwtheswitch.org/unity github https://github.com/ThrowTheSwitch/Unity
unity框架: unity.c unity.h unity_internals.h
fixture夾具部分 unity_fixture.c unity_fixture.h unity_fixture_internals.h unity_fixture_malloc_overrides.h

#include "unity_fixture.h" TEST_GROUP(sprintf);
static char output[100]; static const char *expected; /* 配置基本資訊,可以避免在testcase中的重複 */ TEST_SETUP(sprintf) { memset(output, 0xaa, sizeof output); expected = ""; } /* 清理 */ TEST_TEAR_DOWN(sprintf) {
}
static void expect(const char *s) { expected = s; }
static void given(int charsWritten) { TEST_ASSERT_EQUAL(strlen(expected), charWritten); TEST_ASSERT_EQUAL_STRING(expected, output); TEST_ASSERT_BYTES_EQUAL(0xaa, output[strlen(expected) + 1]); }
TEST(sprintf, NoFormatOperations) { expect("hey"); given(sprintf(output,"hey")); }
TEST(sprintf, InsertString) { expect("Hello World\n"); given(sprintf(output,"Hello %s\n", "World")); }
TEST_GROUP_RUNNER(sprintf) { RUN_TEST_CASE(sprintf, NoFormatOperations); RUN_TEST_CASE(sprintf, InsertString); }
TEST的入口函式是TEST_GROUP_RUNNER,這個函式的執行順序如下: TEST_SETUP(sprintf); TEST(sprintf, NoFormatOperations); TEST_TEAR_DOWN(sprintf); TEST_SETUP(sprintf); TEST(sprintf, InsertString); TEST_TEAR_DOWN(sprintf); TEST_GROUP_RUNNER入口為RunAllTests: #include "unity_fixture.h" static void RunAllTests(void) { RUN_TEST_GROUP(sprintf); }
static
  char   *argstring[] = {      "main" ,      "-v" , };
int main(int argc, char *argv[]) { return UnityMain(argc, argv, RunAllTests); } 註釋:-v開啟冗餘模式,執行測試用例時輸出更多的資訊
打樁與測試替身一樣,在產品程式碼未完成時,或是與硬體相關時,可以模仿一些函式、資料、模組或庫。