我可以在Ceedling的循环中运行测试吗?

我可以在Ceedling的循环中运行测试吗?,c,unit-testing,unity-test-framework,C,Unit Testing,Unity Test Framework,我对使用Ceedling/Unity相当陌生。我有一个模块,我正在测试,给它不同的输入测试点,并检查输出值。但是我需要做很多次。这与我尝试的类似(使用“for”循环): 这对我来说意味着一个测试函数=一个测试。有趣的是,我可以通过循环打印预期值和实际值的所有值(因此循环完全执行)。那么,有没有办法将测试放入循环中?或者以其他方式进行迭代?还是我违反了单元测试的一些规则 谢谢。我也在学习Ceedling,但通常测试运行人员会将他们发现的每个功能视为一个测试。如果您有一个测试输入和输出的静态数组,那

我对使用Ceedling/Unity相当陌生。我有一个模块,我正在测试,给它不同的输入测试点,并检查输出值。但是我需要做很多次。这与我尝试的类似(使用“for”循环):

这对我来说意味着一个测试函数=一个测试。有趣的是,我可以通过循环打印预期值和实际值的所有值(因此循环完全执行)。那么,有没有办法将测试放入循环中?或者以其他方式进行迭代?还是我违反了单元测试的一些规则


谢谢。

我也在学习Ceedling,但通常测试运行人员会将他们发现的每个功能视为一个测试。如果您有一个测试输入和输出的静态数组,那么您可以编写一个helper函数,而不需要测试文件中的test_uuuu前缀,如

void runMyTest(int index)
{
    float delta = MIN_DELTA;
    actual = ModuleUnderTest(inputA_array[index], inputB_array[index]);
    TEST_ASSERT_FLOAT_WITHIN(delta, expected[index], actual);
}

void test_state1(void)
{
    runMyTest(1);
}

void test_state2(void)
{
    runMyTest(2);
}

void test_state3(void)
{
    runMyTest(3);
}

这将为您提供三个单独的测试。

谢谢您的回复。我试过这个,效果很好!
--------------------
OVERALL TEST SUMMARY
--------------------
TESTED:  1
PASSED:  1
FAILED:  0
IGNORED: 0
void runMyTest(int index)
{
    float delta = MIN_DELTA;
    actual = ModuleUnderTest(inputA_array[index], inputB_array[index]);
    TEST_ASSERT_FLOAT_WITHIN(delta, expected[index], actual);
}

void test_state1(void)
{
    runMyTest(1);
}

void test_state2(void)
{
    runMyTest(2);
}

void test_state3(void)
{
    runMyTest(3);
}