【问题标题】:How to unit test this c function? [closed]如何对这个 c 函数进行单元测试? [关闭]
【发布时间】:2021-12-03 19:39:58
【问题描述】:

我有一个简单的 c 函数,

uint_8 tempM_main()
{
  if(g_variable1 > g_variable2) 
    tempM = g_variable1;
  else 
    tempM = g_variable2;
} 

其中 g_variable1 和 g_variable2 是全局变量。 我怎样才能对这个场景进行单元测试? 等值班和边界班需要申请吗?

我正在使用 Tessy 工具进行单元测试。

【问题讨论】:

  • 设置全局变量并断言预期结果?
  • 该函数具有未定义的行为,因为它被定义为返回uint_8,但它没有返回语句。
  • @PaulHankin 仅当调用函数尝试使用返回值时。

标签: c unit-testing


【解决方案1】:

如果你使用返回值,它会有未定义的行为,因为它说它应该返回一个uint_8,但不返回任何东西。在以合理的方式对其进行测试之前,应该对其进行纠正。通过更改签名或返回值。

让我们以您添加了 return 语句的情况为例。你显然在使用全局变量,所以你可以像这样测试它:

g_variable1 = <value1>
g_variable2 = <value2>
assert(tempM_main() == <value3>);
assert(tempM == <value4>);

如果您将签名更改为返回 void,只需删除第一个断言并仅将其替换为函数调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2019-04-15
    • 1970-01-01
    • 2018-11-02
    • 2018-03-30
    • 2018-10-29
    相关资源
    最近更新 更多