Freigeben über


Auswahl

Das Test Authoring and Execution Framework (TAEF) bietet einen Mechanismus, mit dem Sie bestimmte Tests auf der Grundlage der von Ihnen bereitgestellten Metadaten selektiv ausführen oder auslassen können. Im folgenden Abschnitt finden Sie verschiedene Beispiele dafür, wie Sie diesen Auswahlmechanismus mit TE.exe verwenden können.

Sie können TE.exe über ein Fenster der Eingabeaufforderung ausführen.

TE <test_binaries> [/select:<selection criteria>]

Dieser Abschnitt beschreibt die Option TE.exe /select:Auswahlkriterien. Weitere Informationen über TE.exe finden Sie unter TE.exe Befehlsoptionen.

Die Auswahlkriterien werden global auf alle Binardateien angewendet, die an der Eingabeaufforderung genannt wurden. Betrachten wir zwei test_binaries: Examples\CPP.SelectionCriteria1.Example.dll und Examples\CPP.SelectionCriteria2.Example.dll . Das folgende Beispiel zeigt die Eigenschaften bzw. Metadaten, die auf den verschiedenen Ebenen in diesen test_binaries angegeben sind. Sie können diese auch abrufen, indem Sie die Option /listproperties im Fenster der Eingabeaufforderung angeben.

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

Mit anderen Worten, wenn Sie /listproperties für jede dieser test_binaries einzeln verwenden, erhalten Sie:

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

Und:

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

Es ist wichtig, an dieser Stelle darauf hinzuweisen, dass die test_binaries mit ihrem vollständigen Pfad aufgelistet werden und die Klassennamen im Fall von nativen test_binaries als "<Namespace>::<ClassName>" und im Fall von verwalteten test_binaries als "<Namespace>.<ClassName>" aufgelistet werden. In ähnlicher Weise werden die Namen von Testmethoden als "<Namespace>::<ClassName>::<TestMethodName>" im Fall von nativen Testbinaries und "<Namespace>.<ClassName>.<TestMethodName>" im Fall von verwalteten Testbinaries aufgeführt.

Mit anderen Worten: Der vollständig qualifizierte Name eines Namens oder einer Funktion wird gespeichert. Dies soll die Möglichkeit bieten, jede Methode eindeutig zu unterscheiden. Wenn z. B. zwei Klassen denselben Methodennamen haben, hilft die Klassenqualifikation bei der eindeutigen Auswahl der Methode, die Sie interessiert. Zu diesem Zweck helfen die Auswahlkriterien dabei, nur die Tests auszuführen, die Ihren Kriterien in den angegebenen test_binaries entsprechen.

Im obigen Beispiel, sagen wir in Examples\Cpp.SelectionCriteria1.Example.dll, können Sie "Method111" mit einem der folgenden Auswahlkriterien auswählen:

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'"

Sie können alle Tests ausführen, die mit einer "Priority" von weniger als 2 gekennzeichnet sind, indem Sie sie ausführen:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"

Dies würde nur Examples\CPP.SelectionCriteria1.Example.dll ausführen – in unserem Beispiel "class11::method111".

Wenn Sie alle Tests unter class11 ausführen möchten, könnten Sie die qualifizierte Eigenschaft "Name" zusammen mit Platzhaltern verwenden, um sie wie folgt auszuwählen:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
                                                               /select:"@Name='*::class11::*'"

Bei der Verwendung von Auswahlkriterien gibt es einige Dinge, die Sie beachten sollten:

  • "and", "not" und "or" sind reservierte Wörter und unterscheiden nicht zwischen Groß- und Kleinschreibung.
  • Metadateneigenschaftsnamen und -werte unterscheiden nicht zwischen Groß- und Kleinschreibung, z. B. würde "C2" im Beispiel auf "c2" und "C2" passen. Wenn Sie also eine Funktion mit Metadaten "property" und eine andere mit "Property" haben und das Auswahlkriterium nach "PROPERTY" sucht, würde es auf beide zutreffen.
  • Zeichenfolgen in der Abfrage sollten in einfache Anführungszeichen gesetzt werden. Innerhalb einer Zeichenfolge in einer Abfrage ist "?" ein einzelnes Platzhalterzeichen und "*" steht für 0 oder mehr Platzhalterzeichen.
  • Achten Sie bei der Verwendung von Anführungszeichen in der Eingabeaufforderung auf die intelligenten Anführungszeichen, wenn Sie eine Abfrage kopieren. Wenn Sie eine Abfrage aus einer Outlook-E-Mail kopieren, kann es sein, dass Sie versehentlich intelligente Anführungszeichen verwenden und TAEF die Abfrage nicht parsen kann. Tippen Sie stattdessen die Anführungszeichen manuell.

Sehen wir uns kurz einige Beispiele für zusammengesetzte Auswahlkriterien an und was sie ausführen würden.

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"

Wird ausgeführt:

  • Examples\CPP.SelectionCriteria2.Example.dll – class21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"

Wird ausgeführt:

  • Examples\CPP.SelectionCriteria1.Example.dll – class11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"

Wird ausgeführt:

  • Examples\CPP.SelectionCriteria1.Example.dll – class11::method111
  • Examples\CPP.SelectionCriteria2.Example.dll – class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"

Führt alle Tests aus, für die der Wert BackwardsCompatibility nicht angegeben wurde. (Siehe die folgenden Punkte.)

  • Examples\CPP.SelectionCriteria1.Example.dll – class11::method111, class12::method121
  • Examples\CPP.SelectionCriteria2.Example.dll – class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"

Führt alle Tests aus, bei denen der Wert Owner mit "C" beginnt (Groß- und Kleinschreibung wird nicht berücksichtigt). Der vorherige Befehl führt also alle Tests in Examples\CPP.SelectionCriteria1.Example.dll und alle Tests in Examples\CPP.SelectionCriteria2.Example.dll unter class21 (d. h. method211) aus

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"

Führt alle Tests aus, bei denen entweder BackwardsCompatibility nicht angegeben ist oder bei denen der Name des Besitzers mit "C" beginnt und der Wert für BackwardsCompatibilty XP enthält. Beachten Sie, wie die Klammern "(" und ")" verwendet werden, um die Rangfolge festzulegen.

Im Beispiel würde dies selektiv ausgeführt werden:

  • Examples\CPP.SelectionCriteria1.Example.dll – class11::method111, class12::method121,
  • Examples\CPP.SelectionCriteria2.Example.dll – class21::method211, class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"

Führt nur Tests aus, deren Wert Owner nur 3 Zeichen enthält.

In unserem Beispiel würde dies auf "C" zutreffen und nur diese Tests ausführen:

  • Examples\CPP.SelectionCriteria1.Example.dll – class12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"

Hinweis

Dies ist ein gutes Beispiel dafür, wie Sie ">=", "<=", ">" und "<" verwenden können, wenn die Eigenschaftswerte Fließkommazahlen sind.

In unserem Beispiel würde dies alle Methoden ausführen, mit Ausnahme von Examples\CPP.SelectionCriteria2.Example.dll – class22::method221, wo keine Priorität angegeben wurde. Mit anderen Worten, dies würde ausgeführt werden:

  • Examples\CPP.SelectionCriteria1.Example.dll – class11::method111, class11::method112, class12::method121
  • Examples\CPP.SelectionCriteria2.Example.dll – class21::method211.

HINWEIS: Sie können "/select" in Verbindung mit anderen Befehlsoptionen wie "/list" "/listproperties" usw. verwenden.

Intelligente Anführungszeichen

Sie können auf intelligente Anführungszeichen in Ihren Auswahlkriterien stoßen, wenn Sie ein Auswahlkriterium aus einem Outlook- oder Word-Dokument zurück in Ihre Eingabeaufforderung kopieren. Weitere Informationen darüber, was intelligente Anführungszeichen sind, finden Sie unter Intelligente Anführungszeichen: Die versteckte Geißel in Texten für den Computer

Es gibt keine einfache Möglichkeit, intelligente Anführungszeichen zu vermeiden – am besten löschen Sie alle doppelten Anführungszeichen (") und einfachen Anführungszeichen (') in den Auswahlkriterien, nachdem Sie sie in die Eingabeaufforderung kopiert haben, und geben den Teil der Abfrage, der aus Anführungszeichen besteht, erneut ein.

Es gibt eine Option, mit der Sie die Anführungszeichen beim Erstellen von Nachrichten in Outlook ausschalten können. Geben Sie "Intelligente Anführungszeichen" in das Outlook-Hilfefeld ein, um diese Einstellung zu finden.

Schnellauswahl nach Namen

TAEF bietet die Möglichkeit, an der Kommandozeile mit dem Parameter "/name" eine Schnellauswahl auf der Basis des Namens zu treffen:

/name:<test name with wildcards>

entspricht:

/select:@Name='<test name with wildcards>'

Mit anderen Worten, Sie können jetzt eine auf dem Namen basierende Abfrage zur Auswahl stellen, z. B:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"

schneller durchführen, indem Sie /Name wie folgt verwenden:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*

Beachten Sie, dass, wenn sowohl /name als auch /select an der Eingabeaufforderung angegeben werden, /name ignoriert wird und /select den Vorrang hat.