HWUT选择顺序

时间:2016-02-04 06:31:41

标签: c unit-testing

我在HWUT测试中使用了选项。

  • 如果在命令行中,我没有指定选项,则测试将针对所有选项运行。

  • 根据字母顺序对每个选项运行测试。但是,我希望测试能够根据测试文件中指定的顺序运行选择,如下所示。

例如:

printf("CHOICES: start, do_something, end");

我想以相同的顺序执行。

我确实在page中看到了有关选择顺序的一些信息。

这提到了FIRST,NOT_LAST,NOT_FIRST,LAST。我无法弄清楚如何使用它。此外,我不确定这是否是解决方案。

2 个答案:

答案 0 :(得分:0)

  1. HWUT测试的选择涉及完全独立的测试。您的设置程序必须创建一个确定性环境,结果不得依赖外部事物不得依赖于HWUT测试的历史记录!< / p>

  2. 如果您有这样的历史依赖关系,那么您必须在一个选项中编写测试代码(或者根本没有任何选择)。

  3. 有时你会制作/制作&#39;对所有测试都有用的东西。例如,您可能会生成一个由所有CHOICES使用的庞大数据库。当最后一次测试完成时,应从文件系统中删除庞大的数据库。然后,考虑FIRST和LAST是有意义的。

  4. 因此,让我们假设您的情况是案例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'。