Пример тестового тестирования на основе метаданных
В этом разделе рассматриваются некоторые расширенные функции тестирования на основе данных в качестве примера. Если вы по-прежнему охватываете основы, вы можете начать с простого примера на основе данных.
Примеры, на которые ссылается:
МетаданныеOverridingDataDrivenExample
DataDrivenMetadataOverridingExample
Если вы сравните примеры, описанные в этом разделе, с примерами, которые рассматриваются на странице Простой пример на основе данных , вы заметите, что единственное отличие заключается в добавлении метаданных и свойств на различных уровнях теста. Сначала рассмотрим, как создается базовый тест.
В собственном примере обратите внимание на строки 5 и 10 в примере кода ниже:
1 class MetadataOverridingDataDrivenExample
2 {
3 BEGIN_TEST_CLASS(MetadataOverridingDataDrivenExample)
4 ...
5 TEST_CLASS_PROPERTY(L"Priority", L"2")
6 END_TEST_CLASS()
7
8 BEGIN_TEST_METHOD(DataDrivenTest)
9 ...
10 TEST_METHOD_PROPERTY(L"Owner", L"wex")
11 END_TEST_METHOD()
12 }
Таким образом, все тесты, определенные в классе MetadataOverridingDataDrivenExample, имеют приоритет 2. Помните, что тесты могут переопределять любые метаданные, указанные на уровне над ними (класс или модуль). В этом случае метод DataDrivenTest по-прежнему сохраняет приоритет 2 и имеет значение "Владелец" как WEX. Теперь, если это был тест, не управляемый данными, можно выбрать на основе любого из этих вариантов , /select:"@Priority=2" или /select:"@Owner='WEX'" и выполнить в нем метод теста. Но с помощью тестов на основе данных можно дополнительно переопределить свойство, применимое на уровне метода теста, указав метаданные на уровне "Строка".
Давайте рассмотрим XML-файл, чтобы понять, как это сделать.
1 <?xml version="1.0"?>
2 <Data>
3 <Table Id="MetadataTable">
4 <ParameterTypes>
5 <ParameterType Name="Size">int</ParameterType>
6 </ParameterTypes>
7 <Row Priority="1">
8 <Parameter Name="Size">4</Parameter>
9 <Parameter Name="Color">White</Parameter>
10 </Row>
11 <Row Owner="C2">
12 <Parameter Name="Size">10</Parameter>
13 <Parameter Name="Color">Black</Parameter>
14 </Row>
15 <Row Priority="1" Owner="C3">
16 <Parameter Name="Size">9</Parameter>
17 <Parameter Name="Color">Orange</Parameter>
18 </Row>
19 <Row>
20 <Parameter Name="Size">9</Parameter>
21 <Parameter Name="Color">Blue</Parameter>
22 </Row>
23 </Table>
24 </Data>
В первых трех строках пример переопределяет некоторые метаданные, явно указывая метаданные для определенного набора значений данных. Последний набор данных, однако, имеет те же метаданные, что и содержащий его метод: Priority=2 и Owner=WEX.
Давайте рассмотрим управляемый код, прежде чем приступить к выбору и выполнению этих тестов.
1 [TestClass]
2 public class DataDrivenMetadataOverridingExample
3 {
4 [ClassInitialize]
5 [Priority(2)]
6 public static void MyClassInitialize(Object testContext)
7 {
8 }
9
9 [TestMethod]
10 ...
11 [TestProperty("Owner", "WEX")]
12 public void DataDrivenTest()
13 {
14 ...
15 }
...
Вы имитируете свойства в собственном примере именно здесь.
Теперь давайте немного лучше рассмотрим переопределение:
TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
будет выполняться
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
будет выполняться:
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#0
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#2
Упражнение для читателя
В качестве упражнения попробуйте добавить новые значения метаданных. Только изменяя критерии выбора в приведенных выше примерах,
/select:"@Name='*overriding*' and @Owner='WEX'"
будет выполнять управляемые данными тесты с индексами 0 и 3 в управляемых и собственных примерах.
/select:"@Name='*overriding*' and @Priority=2"
выполняет управляемые данными тесты с индексами 1 и 3, а также NonDataDrivenTest в управляемом примере.
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /name:*overriding* /listproperties
F:\ Examples\CPP.DataDriven.Example.dll
WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample
Property[Priority] = 2
WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#0
Property[Owner] = WEX
Property[Priority] = 1
Property[DataSource] = Table:MetadataOverridingDataDrivenExample.xml#MetadataTable
Data[Color] = White
Data[Size] = 4
WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#1
Property[Owner] = C2
Property[DataSource] = Table:MetadataOverridingDataDrivenExample.xml#MetadataTable
Data[Color] = Black
Data[Size] = 10
WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#2
Property[Owner] = C3
Property[Priority] = 1
Property[DataSource] = Table:MetadataOverridingDataDrivenExample.xml#MetadataTable
Data[Color] = Orange
Data[Size] = 9
WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#3
Property[Owner] = WEX
Property[DataSource] = Table:MetadataOverridingDataDrivenExample.xml#MetadataTable
Data[Color] = Blue
Data[Size] = 9
F:\ Examples\CSharp.DataDriven.Example.dll
WEX.Examples.DataDrivenMetadataOverridingExample
Setup: MyClassInitialize
Property[Priority] = 2
WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
Property[Owner] = WEX
Property[Priority] = 1
Data[Color] = White
Data[Size] = 4
WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#1
Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
Property[Owner] = C2
Data[Color] = Black
Data[Size] = 10
WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
Property[Owner] = C3
Property[Priority] = 1
Data[Color] = Orange
Data[Size] = 9
WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#3
Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
Property[Owner] = WEX
Data[Color] = Blue
Data[Size] = 9
WEX.Examples.DataDrivenMetadataOverridingExample.NonDataDrivenTest