Zieltestobjekt

Das Zieltestobjekt ist eine Spezifikation der Klassen und Methoden, auf die der Test angewendet wird.

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

Mit dem Zielobjekt 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 entsprechen kann.

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 Zielobjekt 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 Platzhalterzeichen ein, um gegen Klassennamen des Paketteils abzugleichen.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 die Kennung einer Methode abzugleichen - d.h. die Zeichenfolge, welche die Argumente und die Rückgabeart der Methode darstellt. Dies ist 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 Zielobjekte mit aufeinanderfolgenden Zielregeln enthalten. Um nur auf die Methoden abzuzielen, die Sie bestimmen, fügen Sie hinter dem Zielobjekt der Methode, auf die der Test angewendet werden soll, ein letztes Zielobjekt hinzu, das package=* className=* method=* signature=* type=exclude bestimmt.
  • Paket- und Klassennamen, die in einem Zielobjekt angegeben sind, 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 auf das Paket java.util, den Klassennamen Map und den Methodennamen size abzielt, so wird der Test aufjava.util.HashMap.size() angewendet, sowie auf die size-Methode jeder anderen Klasse, die die Schnittstelle Map implementiert.
  • 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. Beispiel:
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    Diese beiden Zielregeln setzen den Test auf die Klasse IrgendeineKlasse im globalen Paket an, während alle anderen Klassen ausgeschlossen werden. Nach diesen Regeln wird eine andere Klasse mit Namen IrgendeineKlasse, das sich in irgendeinem anderen Paket befindet, ausgeschlossen.
  • 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 Aufruf durch einen Schnittstellenverweis erfolgt, muss der Schnittstellenname übereinstimmen.
Beispiel
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

Enthalten in
Das Testobjekt

Übergeordnetes Thema: Probekit-Beispiele

Copyright IBM Deutschland GmbH und andere 2000, 2004.