Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Тестовая платформа разработки и выполнения (TAEF) предоставляет механизм выборочного выполнения или пропускания определенных тестов на основе предоставленных вами сведений о метаданных. В следующем разделе рассматриваются различные примеры использования этого механизма выбора с TE.exe.
Вы можете запустить TE.exe из окна командной строки.
TE <test_binaries> [/select:<selection criteria>]
В этом разделе описывается параметр TE.exe /select:selection criteria . Дополнительные сведения о TE.exeсм. в разделеTE.exe "Параметры команд".
Критерии выбора применяются глобально ко всем двоичным файлам теста, упомянутым в командной строке. Рассмотрим два тестовых бинарных файла: примеры\CPP.SelectionCriteria1.Example.dll и примеры\CPP.SelectionCriteria2.Example.dll. В следующем примере показаны свойства или метаданные, указанные на различных уровнях в этих test_binaries. Это также можно получить, указав параметр /listproperties в окне командной строки.
CPP.SelectionCriteria1.Example.dll (Owner="C1", Priority=3)
class11 (Owner="C2")
method111(Priority=1)
method112 (BackwardsCompatibility="Windows 2000")
class12
method121
CPP.SelectionCriteria2.Example.dll (Owner="WEX")
class21 (Owner="C1", Priority=2, BackwardsCompatibility="Windows XP")
method211 (Owner="C2")
class22 (Owner="U3")
method221
Другими словами, используя /listproperties для каждой из этих test_binaries отдельно, вы получаете следующее:
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria1.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria1.Example.dll
Property[Owner] = C1
Property[Priority] = 3
WEX::TestExecution::Examples::Class11
Property[Owner] = C2
WEX::TestExecution::Examples::Class11::Method111
Property[Priority] = 1
WEX::TestExecution::Examples::Class11::Method112
Property[BackwardsCompatibility] = Windows2000
WEX::TestExecution::Examples::Class12
WEX::TestExecution::Examples::Class12::Method121
И:
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria2.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria2.Example.dll
Property[Owner] = WEX
WEX::TestExecution::Examples::Class21
Property[BackwardsCompatibility] = Windows XP
Property[Owner] = C1
Property[Priority] = 2
WEX::TestExecution::Examples::Class21::Method211
Property[Owner] = C2
WEX::TestExecution::Examples::Class22
Property[Owner] = U3
WEX::TestExecution::Examples::Class22::Method221
Важно отметить на этом этапе, что test_binaries перечислены вместе с их полными путями, а имена классов перечислены как "<Namespace>::<ClassName>" в случае нативных test_binaries и "<Namespace>.<ClassName>" в случае управляемых test_binaries. Аналогичным образом названия методов тестирования перечислены как "<Namespace>::<ClassName>::<TestMethodName>" в случае нативных test_binaries и "<Namespace>.<ClassName>.<TestMethodName>" в случае с управляемыми test_binaries.
Другими словами, полное имя любого имени или функции — это то, что сохраняется в te. Это позволяет уникально различать любой метод. Например, если два класса имеют одно и то же имя метода, квалификация класса помогает уникально выбрать интересующий вас метод. Для этой цели критерии выбора позволяют выполнять только те тесты, которые соответствуют вашим критериям в заданных test_binaries.
В приведенном выше примере, например, в примере\Cpp.SelectionCriteria1.Example.dll, можно выбрать "Method111" по одному из следующих критериев:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='WEX::TestExecution::Examples::Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Method111'"
Вы можете выполнить все тесты, помеченные как "Приоритет" менее 2, выполнив следующую команду:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"
В нашем примере будет выполняться только примеры\CPP.SelectionCriteria1.Example.dll — class11::method111.
Если вы хотите выполнить все тесты в class11, можно использовать атрибут qualified 'Name' вместе с подстановочным знаком, чтобы выбрать его следующим образом:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
/select:"@Name='*::class11::*'"
При использовании критериев выбора следует учитывать некоторые аспекты:
- "and", "not" и "or" являются зарезервированными словами и являются нечувствительными к регистру.
- Имена и значения свойств метаданных не учитывают регистр, например "C2" в примере, будут соответствовать "c2" и "C2". Таким образом, если у вас есть одна функция с метаданными "свойство" и другая с "Свойство", а критерии выбора ищут "PROPERTY", это будет соответствовать обеим функциям.
- Строковое значение в строке запроса выбора должно быть включено в одинарные кавычки. В строковом значении в запросе выбора "?" есть один подстановочный знак, а "*" — 0 или более подстановочных знаков.
- При использовании кавычки в командной строке следует учитывать смарт-кавычки при копировании по запросу выбора. Если вы копируете запрос выборки из электронной почты Outlook, может случиться так, что смарт-кавычки будут присутствовать, и TAEF может быть не в состоянии проанализировать этот запрос. Вместо этого введите кавычки.
Давайте рассмотрим несколько примеров сложных критериев отбора и их выполнения.
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"
Будет выполняться:
- Примеры\CPP.SelectionCriteria2.Example.dll — class21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"
Будет выполняться:
- Примеры\CPP.SelectionCriteria1.Example.dll — class11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"
Будет выполняться:
- Примеры\CPP.SelectionCriteria1.Example.dll — class11::method111
- Примеры\CPP.SelectionCriteria2.Example.dll — класс22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"
Будут выполняться все тесты, в которых не указано значение Обратной совместимости. (См. следующие элементы.)
- Примеры\CPP.SelectionCriteria1.Example.dll — class11::method11, class12::method121
- Примеры кода\CPP.SelectionCriteria2.Example.dll: класс22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"
выполнит все тесты, в которых значение владельца начинается с "C" (без учета регистра). Таким образом, предыдущая команда будет выполнять все тесты в примерах\CPP.SelectionCriteria1.Example.dll and all tests in Examples\CPP.SelectionCriteria2.Example.dll в классе 21 (то есть метод211).
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"
будет выполнять все тесты, в которых не указана обратная совместимость или где имя владельца начинается с "C", и значение обратной совместимости содержит XP. ОБРАТИТЕ ВНИМАНИЕ, как скобки "(" и "" используются для указания порядка приоритета.
В этом примере будет выполнен выборочный запуск:
- Примеры\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121,
- Примеры\CPP.SelectionCriteria2.Example.dll - class21::method211, class22::method21
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"
будут выполнены только те тесты, у которых свойство владельца содержит значение с только 3 символами.
В нашем примере это будет соответствовать "C" и выполняться только:
- Примеры\CPP.SelectionCriteria1.Example.dll — класс12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"
Замечание
Это хороший пример использования ">=", "<=", ">" и "<" там, где значения свойств являются вещественными числами.
В нашем примере выполняются все методы, кроме Examples\CPP.SelectionCriteria2.Example.dll - class22::method221, где не задан приоритет. Другими словами, это будет работать:
- Примеры\CPP.SelectionCriteria1.Example.dll - class11::method11, class11::method112, class12::method121
- Примеры\CPP.SelectionCriteria2.Example.dll — class21::method211.
Обратите внимание, что вы можете использовать "/select" в сочетании с другими параметрами команд, такими как "/list" "/listproperties" и т. д.
Умные кавычки
Вы можете столкнуться с умными кавычками в критериях выбора, если копируете их из Outlook или документа Word обратно в командную строку. Дополнительные сведения о том, что такое умные кавычки, можно найти на умные кавычки: скрытая проблема текста, предназначенного для обработки компьютерными системами
Нет простого способа избежать умных кавычек. Лучший подход заключается в удалении всех двойных кавычек и одинарных кавычек в критериях выбора после копирования его в командную строку, повторно введите часть запроса с кавычками.
При создании сообщений в Outlook их можно отключить. Введите "умные кавычки" в текстовом поле справки Outlook, чтобы найти это.
Выбор на основе краткого наименования
TAEF позволяет быстро выбрать на основе имени в командной строке с помощью параметра командной строки "/name":
/name:<test name with wildcards>
эквивалентен следующему:
/select:@Name='<test name with wildcards>'
Другими словами, теперь можно указать запрос выбора на основе имени, например:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"
быстрее с помощью /name, например так:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*
Обратите внимание, что если в командной строке указаны как /name , так и /select , то параметр /name игнорируется и /select имеет приоритет.