我想嵌入一个实时单元测试函数的主体作为示例。
这是一个类似的问题
在doxygen中,我们可以展示示例用法:
- 使用
- @example指令使用整个 .c 文件。
- 使用@code指令的狙击手
- 不知何故使用 @snippet 指令 + EXAMPLE_PATH(无法让它工作(
@example
不起作用,因为我没有每个 c 文件只有一个单元测试。 我的测试文件中有一堆单元测试,它们被组织成函数。
@code
意味着我必须编写一些不会被编译或实际执行的代码。 (在Python中,有doctests——这与我正在寻找的相反,因为doctests实际上可以作为单元测试执行。 这样的东西在这里会很好。
@snippet
可能有效。看起来我们会装饰单元测试,并将其制作成一个片段。 我无法让这个工作。(见下文(
下面是一个示例:
/**
* @brief Sets the values to zero
*
*/
void set_to_zero(my_type_t *t)
{
t->x = 0;
t->y = 0;
}
。在另一个 test_suite_1.c 文件中,我有很多单元测试。 这是一个...
int test_set_to_zero()
{
my_type_t t;
set_to_zero(t);
MYASSERT(t.x == 0);
MYASSERT(t.y == 0);
}
我希望这个单元测试,来自我的 test_suite_1.c 文件(不是整个文件中的所有单元测试(出现在文档中,作为此特定函数的示例用法。
我想这样做的原因是我可以继续练习 DRY。 单元测试本质上是基本用法的一个很好的例子。
有没有像这样的指令:@embed_function_body_here<test_set_to_zero>
回到@snippet
. 正如我所说,它没有用。 以下是我尝试对@snippet
指令执行的操作:
我的单元测试位于 \test 文件夹中。 有单独的.c文件包含单元测试(例如test_suite_1.c,test_suite_2.c等
。在test_suite_1...
//! [Zero Test]
int test_set_to_zero()
{
my_type_t t;
set_to_zero(t);
MYASSERT(t.x == 0);
MYASSERT(t.y == 0);
}
//! [Zero Test]
。在regular_code...
/**
* @brief Sets the values to zero
* @snippet testtest_suite_1.c Zero Test
*
*/
void set_to_zero(my_type_t *t)
{
t->x = 0;
t->y = 0;
}
。在多克西文件中...
...
EXAMPLE_PATH = test
EXAMPLE_RECURSIVE = YES
...
这整个@snippet
努力是行不通的。 生成的 html 中不会显示代码段应该在的位置。
请注意,错误说它正在寻找[Zero Test.]
,而不是[Zero Test]
。 这是因为您的摘要实际上是简报的一部分,无论您是否放置简报,看起来简报都会自动以.
终止。
该代码段实际上是在[Zero Test.]
寻找标记;如果你把.
放在标记中,它实际上会起作用。 但是您的解决方案更好,只需终止简报即可!:)
老实说,是你的评论导致我解决了这个问题(我也有(; 010110110101是对的,你应该为此获得荣誉。