测试

单元测试

针对函数单元进行测试,测试函数的基本功能,稳定性,健壮性,覆盖率。 着重点:参数,返回值,功能。

/* 最小的单元测试 */
NX_TEST(TestUnitName)
{
    ASSERT_TRUE(...)
    ASSERT_FALSE(...)

    EXCEPT_TRUE(...)
    EXCEPT_FALSE(...)
}

/* 进入单元时执行 */
NX_TEST_SETUP(TestUnitName)
{

}

/* 退出单元时执行 */
NX_TEST_CLEAN(TestUnitName)
{

}

/* 单元测试表,填写要测试的单元 */
NX_TEST_TABLE(TestCaseName)
{
    NX_TEST_UNIT(TestUnitName), /* 不带setup和clean的单元 */
    NX_TEST_UNIT_SETUP(TestUnitName), /* 带setup的单元 */
    NX_TEST_UNIT_CLEAN(TestUnitName), /* 带clean的单元 */
    NX_TEST_UNIT_SETUP_CLEAN(TestUnitName), /* 带setup和clean的单元 */
};

/* 进入一个单元测试时执行 */
NX_TEST_CASE_SETUP(TestCaseName)
{
    return NX_EOK;
}

/* 退出一个单元测试时执行 */
NX_TEST_CASE_CLEAN(TestCaseName)
{
    return NX_EOK;
}

/* 定义一个单元测试 */
NX_TEST_CASE(TestCaseName);

举例:单元测试自身测试

NX_TEST(Test)
{
    NX_ASSERT_TRUE(1);
    NX_ASSERT_TRUE(NX_True);
    NX_ASSERT_FALSE(0);
    NX_ASSERT_FALSE(NX_False);
}

NX_TEST(Test1)
{
    NX_ASSERT_EQ(1, 1);
    NX_ASSERT_NE(0, 1);

    NX_ASSERT_LT(3, 5);
    NX_ASSERT_LE(3, 3);
    NX_ASSERT_LE(3, 4);
    NX_ASSERT_GT(4, 3);
    NX_ASSERT_GE(3, 3);

    char *p = NX_NULL;
    NX_ASSERT_NULL(p);
    char *q = (char *) 0x1000;
    NX_ASSERT_NOT_NULL(q);
}

NX_TEST(Test2)
{
    NX_ASSERT_IN_RANGE(1, 0, 5);
    NX_ASSERT_IN_RANGE(4, 0, 5);
    NX_ASSERT_IN_RANGE(1, 1, 5);
    NX_ASSERT_IN_RANGE(5, 1, 5);

    NX_ASSERT_NI_RANGE(1, 2, 5);
    NX_ASSERT_NI_RANGE(0, 1, 5);
    NX_ASSERT_NI_RANGE(6, 1, 5);
    NX_ASSERT_NI_RANGE(5, 1, 4);
}

NX_TEST(Test3)
{
    NX_ASSERT_STREQ("hello", "hello");
    char *s = "world!";
    NX_ASSERT_STREQ(s, "world!");

    char buf0[32] = {0x10, 0x20, 0x30,};
    char buf1[32] = {0x10, 0x20, 0x30,};
    NX_ASSERT_BUFEQ(buf0, buf1, 32);

    NX_ASSERT_STRNE("hello", "world");
    s = "hello!";
    NX_ASSERT_STRNE(s, "world!");

    char buf2[32] = {0x40, 0x50, 0x60,};
    NX_ASSERT_BUFNE(buf1, buf2, 32);
}

NX_TEST_SETUP(Test)
{
    NX_ASSERT_TRUE(1);
}

NX_TEST_CLEAN(Test)
{
    NX_ASSERT_FALSE(0);
}

NX_TEST_TABLE(UTest)
{
    NX_TEST_UNIT(Test),
    NX_TEST_UNIT_SETUP_CLEAN(Test),
    NX_TEST_UNIT(Test1),
    NX_TEST_UNIT(Test2),
    NX_TEST_UNIT(Test3),
};

NX_TEST_CASE_SETUP(UTest)
{
    NX_ASSERT_TRUE(1);
    return NX_EOK;
}

NX_TEST_CASE_CLEAN(UTest)
{
    NX_ASSERT_FALSE(0);
    return NX_EOK;
}

NX_TEST_CASE(UTest);

最精简框架:

NX_TEST(yyy)
{
}

NX_TEST_TABLE(xxx)
{
    NX_TEST_UNIT(yyy),
};

NX_TEST_CASE(xxx);

使用方法

在menuconfig中,打开单元测试功能,选取需要测试的单元,退出保存。 在命令行中输入命令即可开始测试:

make run TC=y # TC是TestCase的缩写,表示启用测试案例。

results matching ""

    No results matching ""