HWUT 选择顺序

HWUT choice order

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

例如:

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

我希望它以相同的顺序执行。

我确实在 page.

中看到了一些关于选择顺序的信息

这里提到了FIRST,NOT_LAST,NOT_FIRST,LAST。我不知道如何使用它。另外,我不确定这是否是解决方案。

  1. HWUT 测试的选择与完全独立的测试有关。您的设置过程必须创建一个确定性环境,结果不得依赖于外部事物并且不得依赖于历史 的 HWUT 测试!

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

  3. 有时您 '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设置。