并行程序

TAEF 提供了一种跨多个处理器并行执行测试的机制。

并行保证

  • 任何两个 标记为可并行的测试都不会同时执行。
  • 并行测试可与其他并行和非并行测试同时运行。
  • 所有模块/类/测试的设置和清理都将在同一进程中的相关测试前后以线性方式运行。
  • 如果模块或类包含至少一个并行测试,则可以在不同的进程中并行执行模块/类设置。
  • 并行执行模式与 “/inproc” 执行机制不兼容。

将测试标记为可并行化

示例(本机代码):

class MyTests
{

    TEST_CLASS(MyTests);

    BEGIN_TEST_METHOD(ParallelTest)
        TEST_METHOD_PROPERTY(L"Parallel", L"true")
    END_TEST_METHOD()
};

与 TAEF 中的其他常规元数据一样,这可以在类或模块级别指定,&并将由该类或模块中包含的所有测试继承。 例如,若要将整个程序集标记为可并行化,可以在编译到测试 DLL 的 cpp 文件中执行以下操作(超出任何类或测试规范):

BEGIN_MODULE()
    MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()

然后,可以在较小的范围内重写这个较宽的范围,以禁用特定测试用例或类的并行性,如下所示:

class MyTests
{
    TEST_CLASS(MyTests);

    BEGIN_TEST_METHOD(NonParallelTest)
        TEST_METHOD_PROPERTY(L"Parallel", L"false");
    END_TEST_METHOD()
};

与测试方法最接近的设置(方法元数据最接近,然后是类,然后是模块)将用于决定是否与其他测试并行运行该测试。

在命令提示符处启用并行度

并行执行是一项选择性加入功能。 虽然测试可能标记为并行,但 TAEF 将继续以线性方式执行测试,除非在命令提示符处启用并行执行模式:

te unittests\* /parallel