Skip to main content

Assert-Funktionen

Mit Hilfe sogenannter Assert-Funktionen (Asserts) können Sie auf einfache Weise überprüfen, ob die Reaktion des Prüflings der erwarteten Reaktion entspricht. Dadurch können Sie den Unittest implizit auf das Prüfergebnis reagieren lassen.

Jede Assert-Funktion liefert ein Ergebnis der Prüfung als BOOL zurück, wobei TRUE eine erfolgreiche Prüfung und FALSE eine fehlgeschlagene Prüfung bedeutet. Optional können Sie einen Fehlertext definieren, der im Fehlerfall als Meldung ausgegeben wird.

Um mehrere verschiedene Bedingungen hintereinander zu prüfen, wird typischerweise je Bedingung ein Assert-Aufruf als einzelnes Statement verwendet. Wenn die die Bedingung eines Assert-Aufrufs nicht zutrifft, werden die Fehlerausgänge des Testbausteins automatisch entsprechend beschrieben und die folgenden Assert-Aufrufe nicht mehr ausgeführt.

Manchmal kann es auch sinnvoll sein, zusammengesetzte Bedingungen in Asserts zu verwenden, beispielsweise wenn der Kontrollfluss der Testlogik von mehreren Bedingungen abhängig sein muss. Die einzige korrekte Art, eine zusammengesetzte Bedingung mit Asserts zu erstellen, ist die Verwendung der AND_THEN-Anweisung.

IF (Assert_Bool_IsTrue(^THIS, value1, "") AND_THEN
    Assert_Bool_IsFalse(^THIS, value2, "")) THEN
        // do something
END_IF

Wichtig

Wenn Sie einen Testbaustein vom Typ ETrigA verwenden und Assert-Funktionen nutzen wollen, müssen Sie beim Testbaustein die fehlenden Schnittstellen HandleAssertResult und HasError implementieren. Dies erfolgt über den Kontextbefehl Schnittstellen implementieren. Prüfen Sie weiterhin, den Testbaustein direkt auf das Schema TM.Testcase umzustellen.

Für weitere Informationen siehe: Obsolete Testbaustein-Implementierungen

Asserts for Bool

Name

Beschreibung

Assert_Bool_Equal(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) mit dem Sollwert (reference) übereinstimmt.

Assert_Bool_NotEqual(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) nicht mit dem Sollwert (reference) übereinstimmt.

Assert_Bool_IsTrue(THIS^, <actual>, "")

Erfolgreich, wenn der tatsächliche (actual) Wert TRUE ist.

Assert_Bool_IsFalse(THIS^, <actual>, "")

Erfolgreich, wenn der tatsächliche (actual) Wert FALSE ist.

Asserts für numerische Datentypen

Name (*)

Beschreibung

Assert_TYPE_Equal(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) mit dem Sollwert (reference) übereinstimmt.

Assert_TYPE_NotEqual(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) nicht mit dem Sollwert (reference) übereinstimmt.

Assert_TYPE_Greater(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) größer als der Sollwert (reference) ist.

Assert_TYPE_GreaterEqual(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) größer gleich als der Sollwert (reference) ist.

Assert_TYPE_Less(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) kleiner als der Sollwert (reference) ist.

Assert_TYPE_LessEqual(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) kleiner gleich als der Sollwert (reference) ist.

(*) Beim Namen muss der Platzhalter TYPE mit dem Standard-IEC-Datentyp der nachfolgenden Tabelle ersetzt werden

Tabelle 1. Werte für TYPE

TYPE

IEC-Datentyp

TYPE

IEC-Datentyp

Date

DATE

DInt

DINT

DateAndTime

DATE_AND_TIME

DWord

DWORD

LDate

LDATE

Int

INT

LDateAndTime

LDATE_AND_TIME

LInt

LINT

LTimeOfDay

LTIME_OF_DAY

LWord

LWORD

Time

TIME

SInt

SINT

LTime

LTIME

UDInt

UDINT

TimeOfDay

TIME_OF_DAY

UInt

UINT

LReal

LREAL

ULInt

ULINT

Real

REAL

USInt

USINT

Byte

BYTE

Word

WORD



Asserts für String

Name

Beschreibung

Assert_String_Equal(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche String (actual) mit dem Referenz-String (reference) übereinstimmt.

Assert_String_NotEqual(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche String (actual) nicht mit dem Referenz-String (reference) übereinstimmt.

Assert_String_Contains(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche String (actual) den Referenz-String (reference) enthält.

Assert_String_ContainsNot(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche String (actual) den Referenz-String (reference) nicht enthält.

Assert_String_StartsWith(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche String (actual) mit dem Referenz-String (reference) beginnt.

Assert_String_EndsWith(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche String (actual) mit dem Referenz-String (reference) endet.

Asserts für WString

Name

Beschreibung

Assert_WString_Equal(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) mit dem Referenz-Wert (reference) übereinstimmt.

Assert_WString_NotEqual(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche Wert (actual) nicht mit dem Referenz-Wert (reference) übereinstimmt.

Assert_WString_Contains(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche WString (actual) den Referenz-WString (reference) enthält.

Assert_WString_ContainsNot(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der tatsächliche WString (actual) den Referenz-WString (reference) nicht enthält.

Asserts für Array

Die Menge der angebotenen Assert-Funktionen ist für bestimmte Datentypen eingeschränkt:

  • Datums- und Zeittypen: Keine Array-Assert-Funktionen vorhanden

  • BOOL: Vollständiger Satz von Array-Assert-Funktionen außer ContainsOneOf, ContainsAllOf, ContainsNoneOf.

  • String, Integer, Fließkommatypen: Vollständiger Satz von Array-Assert-Funktionen (wie folgt).

Beispiel: Vollständiger Satz von Assert-Funktionen für STRING-Arrays

Name

Beschreibung

Assert_ArrayOfString_Equals(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn alle folgenden Bedingungen erfüllt sind:

  • Jedes Element des ARRAY [n..m] OF STRING reference ist im ARRAY [i..j] OF STRING actual zu finden

  • Jedes Element hat in beiden Arrays den gleichen Array-Index

  • Die unteren und oberen Grenzen beider Arrays sind gleich

Assert_ArrayOfString_NotEquals(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn mindestens eine der folgenden Bedingungen nicht erfüllt ist:

  • Jedes Element des ARRAY [n..m] OF STRING reference ist im ARRAY [i..j] OF STRING actual zu finden

  • Jedes Element hat in beiden Arrays den gleichen Array-Index

  • Die unteren und oberen Grenzen beider Arrays sind gleich

Assert_ArrayOfString_Contains(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der STRING reference mindestens einmal im ARRAY [i..j] OF STRING actual gefunden wird.

Assert_ArrayOfString_ContainsNot(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn der STRING reference nicht im ARRAY [i..j] OF STRING actual gefunden wird.

Assert_ArrayOfString_ContainsOneOf(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn mindestens ein Element des ARRAY [n..m] OF STRING reference im ARRAY [i..j] OF STRING actual gefunden wird.

Assert_ArrayOfString_ContainsNoneOf(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn im ARRAY [i..j] OF STRING actual kein Element des ARRAY [n..m] OF STRING reference gefunden wird.

Assert_ArrayOfString_ContainsAllOf(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn alle Elemente des ARRAY [n..m] OF STRING reference im ARRAY [i..j] OF STRING actual gefunden werden (ohne Berücksichtigung von Grenzen oder Index).

Assert_ArrayOfString_ContainsSequence(THIS^, <actual>, <reference>, "")

Erfolgreich, wenn alle folgenden Bedingungen erfüllt sind:

  • Jedes Element des ARRAY [n..m] OF STRING reference ist im ARRAY [i..j] OF STRING actual zu finden

  • Die Reihenfolge der Elemente ist in beiden Arrays gleich