HWUT 选择顺序
HWUT choice order
我在 HWUT
测试中使用了选项。
如果在命令行中,我没有指定选择,那么测试运行所有的选择。
并且每个选项的测试都是 运行,按字母顺序排列。但是,我希望测试 运行 根据测试文件中指定的顺序进行选择,如下所示。
例如:
printf("CHOICES: start, do_something, end");
我希望它以相同的顺序执行。
我确实在 page.
中看到了一些关于选择顺序的信息
这里提到了FIRST,NOT_LAST,NOT_FIRST,LAST。我不知道如何使用它。另外,我不确定这是否是解决方案。
HWUT 测试的选择与完全独立的测试有关。您的设置过程必须创建一个确定性环境,结果不得依赖于外部事物并且不得依赖于历史 的 HWUT 测试!
如果你有这样的历史依赖,那么你必须在单一选择中编写测试(或者,根本没有任何选择)。
有时您 'make/build' 对所有测试都有用的东西。例如,您可能会生成一个供所有 CHOICES 使用的巨大数据库。当最后一个测试完成时,庞大的数据库将从文件系统中删除。然后,考虑FIRST和LAST是有意义的。
因此,让我们假设您的情况是情况 3。然后,您通过检查 argv[2] 和 argv[3] 来检查它是否是第一个 and/or 最后的选择,如页面中所述你参考。
/* Begin of 'main()' */
if( argc > 2 && strmp(argv[2], "FIRST") == 0 ) {
/* Build some stuff to be used by all CHOICES. */
}
... test current CHOICE ...
/* End of 'main()' */
if( argc > 3 && strmp(argv[3], "LAST") == 0 ) {
/* Delete some stuff that has been used by all CHOICES. */
}
如果'start'、'do_something'、'end'必须按顺序执行,则创建三个函数'test_start(...)'、'test_do_something(...)'、[=26] =] 执行您的测试——如第 2 项中所建议。
int main(int argc, char** argv)
{
...
test_start(...);
test_do_something(...);
test_end(...);
}
如果'start'、'do_domething'和'end'发生了可以测试的事情,
但是一次测试对你来说太过分了,那么
#include "hwut_unit.h"
int print_index = 0;
int main(int argc, char** argv)
{
...
hwut_if_choice("start") print_index = 0;
hwut_if_choice("do_something") print_index = 1;
hwut_if_choice("end") print_index = 2;
...
}
并在 'test_start(...)' 函数中执行
void test_start(...)
{
...
if( print_index == 0 ) {
printf(...);
}
}
也就是说,使您的打印语句依赖于 'print_index'。
'print_index'依次要根据CHOICE设置。
我在 HWUT
测试中使用了选项。
如果在命令行中,我没有指定选择,那么测试运行所有的选择。
并且每个选项的测试都是 运行,按字母顺序排列。但是,我希望测试 运行 根据测试文件中指定的顺序进行选择,如下所示。
例如:
printf("CHOICES: start, do_something, end");
我希望它以相同的顺序执行。
我确实在 page.
中看到了一些关于选择顺序的信息这里提到了FIRST,NOT_LAST,NOT_FIRST,LAST。我不知道如何使用它。另外,我不确定这是否是解决方案。
HWUT 测试的选择与完全独立的测试有关。您的设置过程必须创建一个确定性环境,结果不得依赖于外部事物并且不得依赖于历史 的 HWUT 测试!
如果你有这样的历史依赖,那么你必须在单一选择中编写测试(或者,根本没有任何选择)。
有时您 'make/build' 对所有测试都有用的东西。例如,您可能会生成一个供所有 CHOICES 使用的巨大数据库。当最后一个测试完成时,庞大的数据库将从文件系统中删除。然后,考虑FIRST和LAST是有意义的。
因此,让我们假设您的情况是情况 3。然后,您通过检查 argv[2] 和 argv[3] 来检查它是否是第一个 and/or 最后的选择,如页面中所述你参考。
/* Begin of 'main()' */
if( argc > 2 && strmp(argv[2], "FIRST") == 0 ) {
/* Build some stuff to be used by all CHOICES. */
}
... test current CHOICE ...
/* End of 'main()' */
if( argc > 3 && strmp(argv[3], "LAST") == 0 ) {
/* Delete some stuff that has been used by all CHOICES. */
}
如果'start'、'do_something'、'end'必须按顺序执行,则创建三个函数'test_start(...)'、'test_do_something(...)'、[=26] =] 执行您的测试——如第 2 项中所建议。
int main(int argc, char** argv)
{
...
test_start(...);
test_do_something(...);
test_end(...);
}
如果'start'、'do_domething'和'end'发生了可以测试的事情, 但是一次测试对你来说太过分了,那么
#include "hwut_unit.h"
int print_index = 0;
int main(int argc, char** argv)
{
...
hwut_if_choice("start") print_index = 0;
hwut_if_choice("do_something") print_index = 1;
hwut_if_choice("end") print_index = 2;
...
}
并在 'test_start(...)' 函数中执行
void test_start(...)
{
...
if( print_index == 0 ) {
printf(...);
}
}
也就是说,使您的打印语句依赖于 'print_index'。 'print_index'依次要根据CHOICE设置。