gpt4 book ai didi

检查 C 中的单元测试 : Best way to test static methods

转载 作者:行者123 更新时间:2023-12-02 09:10:16 26 4
gpt4 key购买 nike

我正在使用 Check 框架对我的 C 代码进行单元测试,但我找不到合适的方法来测试静态方法。

我的解决方法一点也不理想,如果有人能为我指出正确的方向,让我知道如何正确地做这件事,我会很高兴。我的解决方法是简单地添加 #ifdef 宏,该宏将静态方法更改为 extern,以防我在编译时通过 -D DEBUG。

在源文件中

#ifdef DEBUG
unsigned ds_roundup_to_prime (const unsigned bsize) {
#else
static inline unsigned ds_roundup_to_prime (const unsigned bsize) {
#endif

在头文件中我做

#ifdef DEBUG
unsigned ds_roundup_to_prime (const unsigned bsize);
#endif

理想情况下,不应更改源代码以满足单元测试的需要。单元测试框架,应该能够测试源代码,因为它会在生产中看起来。

谢谢

最佳答案

static 函数是否应该被测试是有争议的,因为它们不是公共(public) API 的一部分。

我通过包含被测单元而不是链接它来测试static 函数:

foo.c(被测单元)

static int foo(int x)
{
return x;
}

/* ... */

test_foo.c

#include "foo.c"

void test_foo(void)
{
assert( foo(42) == 42 );
}

int main(void)
{
test_foo();
}

只编译那个测试:

$ gcc -Wall -Werror -o test_foo test_foo.c
$ ./test_foo

关于检查 C 中的单元测试 : Best way to test static methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146066/

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