首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在Ceedling中运行循环测试吗?

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

Stack Overflow用户
提问于 2017-04-10 21:54:48
回答 1查看 536关注 0票数 0

我对使用Ceedling/Unity非常陌生。我有一个模块,我通过给它不同的输入测试点并检查输出值来测试它。但我需要这样做很多次。这类似于我尝试过的(使用'for‘循环):

代码语言:javascript
复制
/*Example Code*/
void test_whenInputIsThis_thenOutputIsThat(void)
{
    for(i=0;i<ITERATIONS;i++)
    {
    /*Everything is declared & initialized as required*/
    inputA = inputA_array[i];
    inputB = inputB_array[i];
    expected = expectedValues_array[i];
    ModuleUnderTest(inputA, inputB);
    TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual);
    }
}

尽管我看到通过的测试(预期的和实际的都在增量内),但在总体测试总结中我看到了以下内容

代码语言:javascript
复制
--------------------
OVERALL TEST SUMMARY
--------------------
TESTED:  1
PASSED:  1
FAILED:  0
IGNORED: 0

这向我建议一个测试函数=一个测试。有趣的是,我可以通过循环打印expected和actual的所有值(所以循环是完全执行的)。那么,有没有一种方法可以把测试放在循环中呢?或者以其他方式迭代它?或者我违反了单元测试的某些规则?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-04-12 04:45:33

我也在学习Ceedling,但通常测试跑步者将他们发现的每个功能都视为一个测试。如果您有一个测试输入和输出的静态数组,您可以在测试文件中编写一个不带test_前缀的帮助函数,如下所示

代码语言:javascript
复制
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);
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43325160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档