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
Verwenden Sie stattdessen
TM.Testcase(Einzeltestbaustein implementieren).Leiten Sie einen neuen Baustein von
TM.Testcaseab und übertragen Sie die Logik der Methoden des existierenden Bausteins (nachCBM.ETrigA). Dazu erstellen Sie mit dem Assistenten einen neuenTM.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 desTM.Testcaseim Unterschied zu den Methoden desCBM.ETrigAbeachten:Die Methoden
prvCyclicAction(),prvStart(),prvAbort()undprvResetOutputs()dürfen im SchemaTM.Testcasenicht überladen werden. Somit können sie nicht einfach vomCBM.ETrigA-basierten Testbaustein in denTM.Testcase-basierten kopiert werden. Stattdessen darf nur der Inhalt dieser Methoden in die Äquivalenten des neuenTM.Testcase-basierten Testbausteins kopiert und angepasst werden, wie es im Folgenden erläutert wird:Anstelle der Methode
prvCyclicAction()wirdExecute()implementiert:Der
SUPER-Aufruf entfällt. Es darf nicht mehrSUPER^.prvCyclicAction()und stattdessen auch nichtSUPER^.Execute()aufgerufen werden.Der Ausgang
VAR_OUTPUT xDonedarf nicht mehr direkt gesetzt werden. Um das erfolgreiche Testende zu signalisieren, muss die MethodeExecute()den WertTRUEzurückliefern.Das direkte Setzen der Fehlerausgänge
VAR_OUTPUT xErrorundiErrorCodeist 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
sInfohat nun den TypWSTRINGund darf nicht mehr explizit deklariert werden: Die Stringänge vonsInfowird nun über den BibliotheksparameterCONSTANTS.WSTRING_LENGTHdefiniert. Der AusgangsInfodarf weiterhin direkt beschrieben werden. Bei Verwendung von Assert-Funktionen kann er allerdings wechselseitig überschrieben werden.
Anstelle der
Methode prvAbort()wirdAbort()implementiert:Der
SUPER-Aufruf entfällt. Es darf nicht mehrSUPER^.prvAbort()aufgerufen werden und stattdessen auch nichtSUPER^.Abort().Die Variable
xAbortInProgressexistiert nicht mehr. Stattdessen muss die MethodeAbort()den WertTRUEzurückliefern, wenn der Abbruch zu Ende ist.Achtung: Dies hat die invertierte Semantik zu
xAbortInProgress.
Anstelle der Methode
prvStart()wirdSetup()implementiert:Der
SUPER-Aufruf entfällt. Es darf nicht mehrSUPER^.prvStart()aufgerufen werden und stattdessen auch nichtSUPER^.Setup().Die Methode
Setup()muss weiterhin keinen Wert zurückgeben (wird ignoriert).
Anstelle der Methode
prvResetOutputs()wirdTearDown()implementiert:Der
SUPER-Aufruf entfällt. Es darf nicht mehrSUPER^.prvResetOutputsaufgerufen werden und stattdessen auch nichtSUPER^.TearDown().Die Methode
TearDown()muss weiterhin keinen Wert zurückgeben (wird ignoriert)
Verwenden Sie stattdessen
TM.Testcase.Der
TM.Testcase_Basewurde in der Vergangenheit gerne benutzt, um einensInfo-Ausgang mit mehr als 255 Zeichen definieren zu können - derTM.Testcasehatte nur einen definiertensInfo-Ausgang mit 255 Zeichen. Nun können Sie Länge dessInfo-Ausgangs mittels BibliotheksparameterCONSTANTS.WSTRING_LENGTHfestlegen.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
sInfovonTM.Testcasegegebenenfalls aufWSTRING(stattSTRING), falls der eigenesInfo-Ausgang ein STRING war.Definieren Sie den Bibliotheksparameter
CONSTANTS.WSTRING_LENGTHder BibliothekTest 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.