Bedingte Metadaten
Manchmal ist es hilfreich, metadatenwerte abhängig von Laufzeitwerten zu ändern. Bedingte Metadaten ermöglichen die Anwendung von Modul-, Klassen- oder Methodenmetadaten nur unter bestimmten Bedingungen basierend auf Laufzeitparametern.
Syntax
Um Metadaten bedingt zu machen, fügen Sie nach dem Metadatennamen eine Bedingung hinzu, die von eckigen Klammern umgeben ist. Die Bedingung muss im Format unserer Auswahlabfragesprache vorliegen. Die Werte für die Variablen stammen aus Laufzeitparametern.
Angenommen, ein Test verfügt über die folgenden Metadaten:
TEST_METHOD_PROPERTY(L"RunAs", L"Elevated")
TEST_METHOD_PROPERTY(L"Ignore[@NoElevation=true]", L"true")
Wenn TAEF dann die DLL lädt, wird die Bedingung "@NoElevation=true" basierend auf den Laufzeitparametern ausgewertet. Wenn der Benutzer also den Laufzeitparameter "NoElevation" auf true festlegt, werden metadaten mit dem Namen "Ignore" und dem Wert "true" auf den Test angewendet.
Wenn in einem Test mehrere bedingte Metadaten angezeigt werden, wird jede unabhängig auf die gleiche Weise ausgewertet. Dies kann nützlich sein, wenn ein Test mehrere mögliche Werte eines Laufzeitparameters erkennt.
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")
Wenn ein Test über die oben gezeigten Metadaten verfügt und der Benutzer TestCaseLevel auf Low festlegt, wird der Test aufgrund der lightweight-Datenquelle nur dreimal aufgerufen. Wenn der Benutzer TestCaseLevel auf High festlegt, wird die PICT-Datenquelle verwendet, um viele weitere Parameter für den Test zu generieren. Wenn TestCaseLevel nicht auf Hoch oder Niedrig festgelegt ist, werden keine Metadaten hinzugefügt.
Standardwerte
Wenn Sie metadaten nur dann hinzufügen möchten, wenn keine anderen Bedingungen für diesen bestimmten Metadatennamen als true ausgewertet wurden, können Sie den Metadatennamen mit [Standard] anfügen.
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")
Wenn ein Test über die oben genannten Metadaten verfügt und der Benutzer TestCaseLevel nicht auf Niedrig oder Hoch festgelegt hat, wird Pict:Order auf 2 festgelegt. Wenn der Benutzer TestCaseLevel auf Niedrig oder Hoch festlegt, wird Pict:Order auf 1 bzw. 3 festgelegt. Der Wert 2 gilt nicht, da mindestens eine Bedingung für diesen Test für Pict:Order auf true ausgewertet wurde.
Achten Sie darauf, die [Standardeinstellung] nicht zu verlassen, wenn sie benötigt wird.
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")
Wenn TestCaseLevel auf Low festgelegt ist, entspricht der obige Metadatensatz dem folgenden Metadatensatz:
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")
In diesem Fall ist nicht angegeben, ob die PICT-Datenquelle die "1" oder die "2" für die PICT-Bestellung verwendet.