Testziel-Spezifikationen

Eine Ziel-Spezifikation gibt die Klassen und Methoden an, auf die der Test angewendet werden soll.

Die Zielspezifikation ist optional. Wenn kein Ziel angegeben wird, so wird der Test auf alle Klassen angewendet, die von der Instrumentierungsengine verarbeitet werden.

Mit der Zielspezifikation lassen sich Filterregeln erstellen, mit Hilfe derer Methoden auf der Basis von Mustern, die mit dem Paket, der Klasse, dem Methodennamen und der Methodenkennung abgeglichen werden, in die Instrumentierung ein- oder von ihr ausgeschlossen werden können. Die Muster können Platzhalterzeichen enthalten, wobei "*" keinem oder mehreren Zeichen entspricht.

Wenn die Platzhalterzeichen eines Ziels mit Paket, Klasse, Namen und Kennung einer Methode übereinstimmen, so bestimmt die Eigenschaft type, ob die Methode instrumentiert wird (include) oder nicht (exclude). Wenn die Muster nicht mit Paket, Klasse, Namen und Kennung einer Methode übereinstimmen, so wird die Methode standardmäßig instrumentiert.

Das Ziel enthält die folgenden Eigenschaften:
Eigenschaft Beschreibung
type Erforderlich. Die Eigenschaft type bestimmt, ob ein Test auf eine Zielmethode angewendet wird, oder nicht. Wird include angegeben, so wird der Test auf die Klassen und Methoden angewandt, die mit den Platzhalterzeichen übereinstimmen, mit exclude werden sie ausgeschlossen.
package Optional. Geben Sie ein Platzhalterzeichenmuster an, mit dem der Paketteil des Klassennamens abgeglichen werden soll. Zum Beispiel: java.util* gleicht alle Klassen im Paket java.util sowie den entsprechenden Unterpaketen ab. Wenn nicht angegeben, ist der Standardwert *.
className Optional. Geben Sie ein Platzhalterzeichen ein, um gegen Klassennamen abzugleichen. Wenn nicht angegeben, ist der Standardwert *.
method Optional. Geben Sie ein Platzhalterzeichen ein, um gegen Methodennamen abzugleichen. Wenn nicht angegeben, ist der Standardwert *.
signature Optional. Geben Sie ein Platzhalterzeichen ein, um gegen eine Methodenkennung abzugleichen. (signature ist die Zeichenfolge, die die Argumente und den Rückgabetyp der Methode darstellt.) Verwenden Sie das Java-interne Format für Methodenkennungen. Zum Beispiel: (Ljava/lang/Object;)D ist die Kennung einer Methode, die ein Objekt als Parameter annimmt, und ein Gegenstück zurückgibt. Dieses Platzhalterzeichen kann verwendet werden, um zwischen Überlastungsmethoden zu unterscheiden. Wenn nicht angegeben, ist der Standardwert *.

Hinweise:

  • Ein Test kann mehrere Zielspezifikationen mit aufeinanderfolgenden Zielregeln enthalten. Um einen Test nur auf bestimmte Methoden anzuwenden, geben Sie zunächst die Methoden an, die Sie einschließen möchten, und fügen Sie eine abschließende Zielspezifikation package=* className=* method=* signature=* type=exclude ein.
  • Von Ihnen angegebene Paket- und Klassennamen werden auch gegen die Paket- und Klassennamen möglicher Schnittstellen abgeglichen, die eine Klasse implementiert. java.util.HashMap implementiert beispielsweise die Schnittstelle java.util.Map. Wenn ein Test das Paket java.util, den Klassennamen Map und den Methodennamen size zum Ziel hat, wird der Test auf java.util.HashMap.size() und auf die Methode size jeder weiteren Klasse, die die Map-Schnittstelle implementiert, angewendet.
  • Mustererkennung zieht keine Vererbungsbeziehungen in Betracht. Wenn die Klasse Derived die Klasse Base erweitert, und ein Test gegen Base.run() läuft, so wird der Test nicht automatisch auf Derived.run() angewendet.
  • Wenn das Paketmuster in einem Zielobjekt aus einem einzelnen Punkt (".") besteht, so stellt es das globale, nicht benannte Java-Paket dar. Hierdurch können Sie explizit Klassen im globalen Paket ansprechen.
  • Aufrufsitetests gleichen Zielmuster und Regeln gegen Paket, Klasse, Namen und Kennung einer aufgerufenen Methode ab. Der Abgleich wird so gegen die aufgerufene Methode durchgeführt, wie sie zum Zeitpunkt der Kompilierung bekannt war; d.h. gegen die statisch bekannten Klassen- und Methodennamen, nicht die tatsächlichen Methoden, die aufgrund von Vererbung und virtuellen Funktionen aufgerufen werden. Wenn der Anruf über einen Schnittstellenverweis erfolgt, muss der Schnittstellenname übereinstimmen.
Beispiel:

Wählen Sie zur Angabe eines Ziels 'Ziel' im Baumstrukturteilfenster der Seite 'Tests' aus, und klicken Sie im Bearbeitungsteilfenster auf 'Hinzufügen', dann 'Bearbeiten'.

Dieses Beispiel wendet den Test nur auf Methoden an, deren Name mit Get in Klassen beginnt, deren Name mit Proxy im Paket com.example endet. Zieleinträge der Typen 'einschließen' und 'ausschließen'. Der Zieleintrag zum Ausschließen verwendet Sterne als Platzhalterzeichen, um alles auszuschließen. Der Eintrag zum Einschließen gibt die genauen Methoden an, als Ziel dienen sollen. Alle sonstigen Klassen und Methoden sind von der Instrumentierung ausgeschlossen.