條件式中繼資料
有時候,根據運行時間值而變更中繼資料值會很有用。 條件式中繼資料允許模組、類別或方法中繼資料僅根據 執行時間參數在特定條件中套用。
語法
若要設定中繼資料條件,請在中繼資料名稱後面加上方括弧括住的條件。 條件的格式必須是 我們的選取查詢語言。 變數的值來自 執行時間參數。
例如,假設測試具有下列中繼資料:
TEST_METHOD_PROPERTY(L"RunAs", L"Elevated")
TEST_METHOD_PROPERTY(L"Ignore[@NoElevation=true]", L"true")
然後,當 TAEF 載入 DLL 時,它會根據執行時間參數評估 「@NoElevation=true」 條件。 因此,如果使用者將 「NoElevation」 執行時間參數設定為 true,則測試將會套用名稱為 「Ignore」 和值 「true」 的中繼資料。
如果一個測試中出現多個條件式中繼資料,則會以相同方式獨立評估每個條件式中繼資料。 如果您想要測試辨識執行時間參數的多個可能值,這非常有用。
TEST_METHOD_PROPERTY(L"Data:MyTestData[@TestCaseLevel='Low']", L"{ Datum1, Datum2, Datum3 }")
TEST_METHOD_PROPERTY(L"DataSource[@TestCaseLevel='High']", L"Pict:FullDataSet.model?Order=3")
如果測試具有上述的中繼資料,且使用者將 TestCaseLevel 設定為 Low,則測試只會因為 輕量型資料來源而叫用三次。 如果使用者將 TestCaseLevel 設定為 High,則會使用 PICT 資料來源 來產生更多測試參數。 如果 TestCaseLevel 未設定為 High 或 Low,則不會新增任何中繼資料。
預設值
只有當該特定中繼資料名稱的其他條件評估為 true 時,才想要新增中繼資料時,您可以使用 [default]附加中繼資料名稱。
TEST_METHOD_PROPERTY(L"DataSource", L"Pict:MyTest.model")
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='Low']", L"1")
TEST_METHOD_PROPERTY(L"Pict:Order[default]", L"2")
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='High']", L"3")
如果測試具有上述中繼資料,且使用者未將 TestCaseLevel 設定為 Low 或 High,Pict:Order 將會設定為 2。 如果使用者將 TestCaseLevel 設定為 Low 或 High,Pict:Order 會分別設定為 1 或 3。 值 2 將不會套用,因為該測試上至少有一個 Pict:Order 的條件評估為 true。
如有需要,請小心不要離開 [預設值]。
TEST_METHOD_PROPERTY(L"DataSource", L"Pict:MyTest.model")
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='Low']", L"1")
TEST_METHOD_PROPERTY(L"Pict:Order", L"2") // This should have [default]
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='High']", L"3")
如果 TestCaseLevel 設定為 Low,則上述元資料集相當於下列一組中繼資料:
TEST_METHOD_PROPERTY(L"DataSource", L"Pict:MyTest.model")
TEST_METHOD_PROPERTY(L"Pict:Order", L"1")
TEST_METHOD_PROPERTY(L"Pict:Order", L"2")
在此情況下,不會指定 PICT 資料來源是否會針對 PICT 順序使用 「1」 或 「2」。