Skip to main content

Obsolete Testbaustein-Implementierungen

Wichtig

Die Testbaustein-Implementierungen CBM.ETrigA und TM.Testcase_Base werden von Version 5.0.0.0 noch unterstützt, in zukünftigen Versionen möglicherweise nicht mehr.

Wenn Sie Testfälle mit alter Implementierung haben und diese auf die neue Implementierung anpassen wollen, müssen Sie folgende Punkte beachten

. Bei Verwendung von CBM.ETrigA
  • Verwenden Sie stattdessen TM.Testcase (Einzeltestbaustein implementieren).

  • Leiten Sie einen neuen Baustein von TM.Testcase ab und übertragen Sie die Logik der Methoden des existierenden Bausteins (nach CBM.ETrigA). Dazu erstellen Sie mit dem Assistenten einen neuen TM.Testcase. Aktivieren Sie dabei alle Optionen, so dass alle möglichen Beispielinhalte mit generiert werden (Template, Kommentare, Methoden, ...). So können Sie die Unterschiede leicht erkennen. Größere Teile Ihrer bestehenden Test-Implementierung können gleich bleiben, wenn Sie dabei folgende Konventionen des TM.Testcase im Unterschied zu den Methoden des CBM.ETrigA beachten:

    • Die Methoden prvCyclicAction(), prvStart(), prvAbort() und prvResetOutputs() dürfen im Schema TM.Testcase nicht überladen werden. Somit können sie nicht einfach vom CBM.ETrigA-basierten Testbaustein in den TM.Testcase-basierten kopiert werden. Stattdessen darf nur der Inhalt dieser Methoden in die Äquivalenten des neuen TM.Testcase-basierten Testbausteins kopiert und angepasst werden, wie es im Folgenden erläutert wird:

    • Anstelle der Methode prvCyclicAction() wird Execute() implementiert:

      • Der SUPER-Aufruf entfällt. Es darf nicht mehr SUPER^.prvCyclicAction() und stattdessen auch nicht SUPER^.Execute() aufgerufen werden.

      • Der Ausgang VAR_OUTPUT xDone darf nicht mehr direkt gesetzt werden. Um das erfolgreiche Testende zu signalisieren, muss die Methode Execute() den Wert TRUE zurückliefern.

      • Das direkte Setzen der Fehlerausgänge VAR_OUTPUT xError und iErrorCode ist weiterhin möglich, sollte aber durch entsprechende Assert-Funktionen ersetzt werden. Wir behalten uns vor, die Fehlerausgänge in zukünftigen Versionen zu ändern und planen die Assert-Funktionen als Migrationspfad.

      • Der Ausgang sInfo hat nun den Typ WSTRING und darf nicht mehr explizit deklariert werden: Die Stringänge von sInfo wird nun über den Bibliotheksparameter CONSTANTS.WSTRING_LENGTH definiert. Der Ausgang sInfo darf weiterhin direkt beschrieben werden. Bei Verwendung von Assert-Funktionen kann er allerdings wechselseitig überschrieben werden.

    • Anstelle der Methode prvAbort() wird Abort() implementiert:

      • Der SUPER-Aufruf entfällt. Es darf nicht mehr SUPER^.prvAbort() aufgerufen werden und stattdessen auch nicht SUPER^.Abort().

      • Die Variable xAbortInProgress existiert nicht mehr. Stattdessen muss die Methode Abort() den Wert TRUE zurückliefern, wenn der Abbruch zu Ende ist.

        Achtung: Dies hat die invertierte Semantik zu xAbortInProgress.

    • Anstelle der Methode prvStart() wird Setup() implementiert:

      • Der SUPER-Aufruf entfällt. Es darf nicht mehr SUPER^.prvStart() aufgerufen werden und stattdessen auch nicht SUPER^.Setup().

      • Die Methode Setup() muss weiterhin keinen Wert zurückgeben (wird ignoriert).

    • Anstelle der Methode prvResetOutputs() wird TearDown() implementiert:

      • Der SUPER-Aufruf entfällt. Es darf nicht mehr SUPER^.prvResetOutputs aufgerufen werden und stattdessen auch nicht SUPER^.TearDown().

      • Die Methode TearDown() muss weiterhin keinen Wert zurückgeben (wird ignoriert)

. Bei Verwendung von TM.Testcase_Base
  • Verwenden Sie stattdessen TM.Testcase.

  • Der TM.Testcase_Base wurde in der Vergangenheit gerne benutzt, um einen sInfo-Ausgang mit mehr als 255 Zeichen definieren zu können - der TM.Testcase hatte nur einen definierten sInfo-Ausgang mit 255 Zeichen. Nun können Sie Länge des sInfo-Ausgangs mittels Bibliotheksparameter CONSTANTS.WSTRING_LENGTH festlegen.

  • Leiten Sie direkt von TM.Testcase ab, anstatt von TM.Testcase_Base. Dabei müssen Sie jedoch folgendes beachten:

    • Entfernen Sie den eigenen Ausgang sInfo.

    • Ändern Sie die Zugriffe auf das sInfo von TM.Testcase gegebenenfalls auf WSTRING (statt STRING), falls der eigene sInfo-Ausgang ein STRING war.

    • Definieren Sie den Bibliotheksparameter CONSTANTS.WSTRING_LENGTH der Bibliothek Test Manager IEC Unit Test, 5.0.0.0 (oder neuer) auf die maximal benötigte Länge.

Testbausteine, die vollkommen ohne Basis implementiert wurden und deshalb ausschließlich die Schnittstellenkonvention einhalten, könnten in der Zukunft ebenfalls inkompatibel werden. Es empfiehlt sich immer, von TM.Testcase abzuleiten.