Fragmenttestobjekt

Das Fragmenttestobjekt ist eine Spezifikation der Testlogik. Es enthält den Java-Quellcode, der ausgeführt wird.

Mindestens ein Fragmentobjekt ist erforderlich. Es enthält das Codeobjekt sowie alle Datenelemente, auf die der Quellcode im Codeobjekt verweist. Ein Test kann mehr als ein Fragment enthalten, aber keine zwei Fragmente dürfen den selben type haben.

Das Fragmentobjekt enthält die folgenden Eigenschaften:
Eigenschaft Beschreibung
type Erforderlich. Für Methodentests muss es entry, exit, catch, staticInitializer, oder executableUnit sein. Für Aufrufsitetests muss es beforeCall oder afterCall sein. In einem einzigen Test können Sie Methodenfragmente und Aufrufsitefragmente nicht miteinander kombinieren.
Die folgende Tabelle listet die Fragmenttypen auf, beschreibt sie und zeigt den Testtyp an, mit dem sie jeweils verwendet werden können:
Fragmenttyp Testtyp Beschreibung
entry Methode entry-Fragmente werden beim Eintrag der Methode ausgeführt. entry-Fragmente werden nicht für Methoden ausgeführt, die von Probekit in die Klasse eingefügt wurden.
exit Methode exit-Fragmente werden ausgeführt, wenn die Methode verlassen wird; entweder bei normalem Verlassen, wenn die Methode eine Ausnahmebedingung auslöst, oder wenn eine ausgelöste Ausnahmebedingung aus der Methode heraus repliziert wird. exit-Fragmente werden nicht für Methoden ausgeführt, die von Probekit in die Klasse eingefügt wurden.
catch Methode catch-Fragmente werden zu Beginn einer catch-Klausel in der Methode oder zu Beginn einer finally-Klausel, die von einer Ausnahmebedingung ausgelöst wurde, ausgeführt.
staticInitializer Methode staticInitializer-Fragmente werden innerhalb des Klasseninitialisierungsoperators jeder getesteten Klasse ausgeführt. Sollte die Klasse noch nicht über einen statischen Initialisierungsoperator verfügen, so wird dieser erstellt. Weitere Informationen hierzu finden Sie unter Das Testfragment 'staticInitializer'.
executableUnit Methode executableUnit-Fragmente werden in Methoden, die den Ziel- und Filterspezifikationen des Tests entsprechen, und für die Quellcode zur Verfügung steht, vor jeder ausführbaren Codeeinheit ausgeführt. Wenn die Methode über keine Quellenzeileninformation verfügt, wird angezeigt, dass sie eine einzige ausführbare Einheit mit dem Wert null hat. Weitere Informationen hierzu finden Sie unter Das Testfragment 'executableUnit'.
beforeCall Aufrufsite beforeCall-Fragmente werden in der aufrufenden Methode ausgeführt, direkt bevor die Zielmethode aufgerufen wird. Nicht gültig für Methodentests.
afterCall Aufrufsite afterCall-Fragmente werden in der aufrufenden Methode ausgeführt, direkt nachdem die Zielmethode existiert; entweder bei normalem Verlassen oder wenn die Zielmethode eine Ausnahmebedingung auslöst. Nicht gültig für Methodentests.
Hinweise:
  • Wenn Tests auf Methoden angewendet werden, die als synchronized deklariert sind, so kann nicht garantiert werden, dass der Code in entry, exit und executableUnit-Fragmenten davor geschützt ist, gleichzeitig in mehreren Threads ausgeführt zu werden. Beispielsweise könnte ein entry-Fragment und die ersten executableUnit-Fragmente möglicherweise ausgeführt werden, bevor die Methodensynchronisationslogik eine Sperre setzt, und ein exit-Fragment könnte ausgeführt werden, nachdem die Sperre bereits aufgehoben wurde.
  • Ein Test kann mehrere Fragmente beinhalten, die auf die gleiche Position innerhalb einer Methode angewendet werden; zum Beispiel die Position eines entry-Fragments und des ersten executableUnits. Ein anderes Beispiel ist ein catch-Fragment und die Zugeordnete executableUnit-Position, da catch-Klauseln, die Ausnahmebedingungen behandeln, immer den Beginn einer neuen ausführbaren Einheit darstellen. In diesen Fällen wird der Code des executableUnit-Fragments nach dem Code des entry- oder catch-Fragments ausgeführt. Eine Folge hiervon ist, dass entry-Fragmente, soweit vorhanden, immer vor allen anderen Fragmentarten ausgeführt werden.
Beispiel
<fragment type="entry"> 
   <data . . . />
   <code>
      . . . 
   </code>
</fragment>

Enthalten in
Das Testobjekt

Übergeordnetes Thema: Probekit-Beispiele

Verwandte Konzepte
Methodentests verglichen mit Aufrufsitetests

Copyright IBM Deutschland GmbH und andere 2000, 2004.