0

我想在 cmocka 中编写一个测试,并每次使用不同的参数运行几次(这样我就可以测试不同的输入案例)。类似于 Python 的 decorators @parameterized.parameters。我可以想到一些方法,例如:

  1. 我总是可以使用一个常见的辅助函数并将测试的主要逻辑提取到它。然后从不同的测试中调用这个 aux 函数。
  2. 我可以在测试的顶部声明一个输入参数数组,然后在循环中运行测试逻辑并对数组进行迭代。
  3. 仅通过在 setup 函数中声明输入参数来执行相同的操作。
  4. 以通用方式编写测试,为每个参数集编写设置函数,然后执行相同的测试函数,同时每次提供不同的设置函数。这样,测试将从设置中接收参数值。我不确定这是一个很好的方法

目标是更好的可维护性和可扩展性。

重构测试的简单示例:假设我有一个函数bool is_even(int a) ,我想测试它。在测试文件中:

static void test_returned_val_is_even(void **state) {
   bool rc = is_even(2);
   assert_true(rc);
}

ps 让我们假设测试不仅仅是调用 is_even :)

我在徘徊还有其他方法,是否有比另一种更好的方法以及为什么:) 提前致谢。

4

0 回答 0