gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:47:32 27 4
gpt4 key购买 nike

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

/*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);
}
}

虽然我看到测试已通过(预期和实际都在增量范围内),但在总体测试摘要中我看到了这一点

--------------------
OVERALL TEST SUMMARY
--------------------
TESTED: 1
PASSED: 1
FAILED: 0
IGNORED: 0

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

谢谢。

最佳答案

我也在学习 Ceedling,但通常测试运行者将他们找到的每个函数视为一个测试。如果您有测试输入和输出的静态数组,您可以在测试文件中编写一个不带 test_ 前缀的辅助函数,例如

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);
}

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

关于我可以在 Ceedling 中循环运行测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com