我在HWUT
测试中使用了选项。
如果在命令行中,我没有指定选项,则测试将针对所有选项运行。
根据字母顺序对每个选项运行测试。但是,我希望测试能够根据测试文件中指定的顺序运行选择,如下所示。
例如:
printf("CHOICES: start, do_something, end");
我想以相同的顺序执行。
我确实在page中看到了有关选择顺序的一些信息。
这提到了FIRST,NOT_LAST,NOT_FIRST,LAST。我无法弄清楚如何使用它。此外,我不确定这是否是解决方案。
答案 0 :(得分:0)
HWUT测试的选择涉及完全独立的测试。您的设置程序必须创建一个确定性环境,结果不得依赖外部事物且不得依赖于HWUT测试的历史记录!< / p>
如果您有这样的历史依赖关系,那么您必须在一个选项中编写测试代码(或者根本没有任何选择)。
有时你会制作/制作&#39;对所有测试都有用的东西。例如,您可能会生成一个由所有CHOICES使用的庞大数据库。当最后一次测试完成时,应从文件系统中删除庞大的数据库。然后,考虑FIRST和LAST是有意义的。
因此,让我们假设您的情况是案例3.然后,通过检查您引用的页面中描述的argv [2]和argv [3]来检查它是第一个和/或最后一个CHOICE。
/* 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. */
}
答案 1 :(得分:0)
如果'start''do_something','end'必须按顺序执行,那么创建三个函数'test_start(...)','test_do_something(...)'和'test_end(.. 。)执行测试的' - 如第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语句依赖于'print_index'。 必须根据CHOICE设置'print_index'。