Show TOC

Gesperrte Messungen entsperrenLocate this document in the navigation structure

Vorgehensweise

In diesem Abschnitt wird erklärt, wie Sie eine Messung entsperren, wenn diese Messung das Starten neuer Messungen verhindert.

Diese Situation kann nur auftreten, wenn Sie Inline-Quelltextabdeckungsmessungen in einem einzigen Programmkontext vornehmen. Das Beispielprogramm für das erste Tutorial ist ein Beispiel dieser Art von Messung.

Angenommen, Sie messen ein Programm, das einen Integrationstest ausführt. Das Programm wird mit einem Kurzdump beendet. Sie korrigieren das Problem und starten den Integrationstest erneut.

Zu Ihrer Überraschung endet der neue Testlauf mit einer Ausnahme vom Coverage API. Grund: Es läuft bereits eine andere Messung. Was ist passiert Der Kurzdump verhinderte, dass Ihr vorher gestartete Inline-Test die Messung stoppt. Sie verbleibt nun im aktiven Status, damit Sie keine neue Messung starten können.

Solange der Status einer Messung 'Gestartet" ist, kann keine andere Messung starten, die einen der gleichen Benutzer angibt. Wie können Sie Ihre Quelltextabdeckungmessungen wieder aufnehmen?

Sie brauchen nur die Messung erneut zu laden und zu stoppen. Sie verwenden die gleiche Vorgehensweise, wenn Sie das Coverage API über einen großen Zeitraum ausführen.

Um eine gesperrte Messung in einer Inline-Testumgebung erneut zu laden und zu stoppen, können Sie Ihrem Methodenaufruf IF_SCV_MEASUREMENT->START den folgenden Quelltext hinzufügen:

DATA: measurement TYPE REF TO if_scv_measurement,
      execution_error TYPE REF TO cx_scv_execution_error.

* Catch an operation exception when starting a measurement.
TRY.
    measurement->start( ). 
  CATCH cx_scv_execution_error INTO execution_error.
* If the cause is a blocking measurement, then it is 
* captured in the exception. You can use it to stop the
* blocking measurement. 
    IF execution_error->blocking_measurement IS BOUND.
      execution_error->blocking_measurement->stop( ).
      execution_error->blocking_measurement->finalize( ).
      measurement->start( ).
    ENDIF.
ENDTRY.
         

Wenn eine Ausnahme wegen einer gesperrten Messung ausgelöst wurde, enthält das Ausnahmeobjekt im Attribut BLOCKING_MEASUREMENT eine Referenz zur gesperrten Messung. Sie können BLOCKING_MEASUREMENT für das Stoppen und Finalisieren der gesperrten Messung verwenden. Versuchen Sie anschließend, die neue Messung erneut zu starten.