Beispiel 6: Testfall mit Struktur- und Arrayelementen

In diesem Beispiel wird ein Test für den Funktionsbaustein functionBlockWithArrayAndStruct aus dem folgenden ST-Code erstellt und ausgeführt.

TYPE
structA : STRUCT
ele1 : INT;
ele2 : INT;
END_STRUCT;
END_TYPE
 
FUNCTION_BLOCK functionBlockWithArrayAndStruct
VAR_INPUT
input_array : ARRAY [0..1] OF INT;
input_struct : structA;
END_VAR
VAR_OUTPUT
output_array : ARRAY [0..1] OF INT;
output_struct : structA;
END_VAR
 
output_array[0] := input_array[0] + 1;
output_array[1] := input_array[1] + 2;
output_struct.ele1 := input_struct.ele1 + 1;
output_struct.ele2 := input_struct.ele2 + 2;
END_FUNCTION_BLOCK

Dieses Beispiel enthält Eingänge und Ausgänge, die auf einem strukturierten Datentyp oder ARRAY-Datentyp basieren. Dafür gilt diese Einschränkung:

Verhalten bei Struktur- und Arrayelementen

Für einen Eingang und Ausgang, der auf einem →strukturierter Datentyp oder →ARRAY-Datentyp basiert, ist nur eine Spalte vorhanden. Sie müssen den Spaltennamen erweitern, falls Sie ein Element davon ansprechen wollen. Lesen Sie unter "Zugriff auf strukturierten Datentyp und Strukturelemente" und "Zugriff auf ARRAY-Datentyp und ARRAY-Elemente" über die dafür benötigte Syntax nach.
Das bedeutet: Sie müssen selbst eine zusätzliche Spalte pro Struktur- oder Array-Element einfügen, das Sie im Testfall spezifizieren wollen. Für alle anderen Elemente geben Sie die Vorgaben im Arbeitsblatt Defaults an.
Beachten Sie, dass das Testframework nicht prüft, ob der Testfall jedes Element von solchen Eingangsvariablen enthält.

Die Vorgehensweise beim Test dieses Funktionsbausteins ist analog zu den vorigen Beispielen und wird in diesem Beispiel nicht erneut angeführt. Stattdessen konzentriert sich dieser Artikel auf die nötigen Aktionen für die Testsuite.

Die folgende Grafik zeigt das Arbeitsblatt für den Testfall nach der Erstellung der Testsuite (oben) und das angepasste Arbeitsblatt für den Testfall (unten):

images/download/attachments/500236851/TF_TestsuiteExampleAddition6-version-2-modificationdate-1662717270301-api-v2.png

Diese Daten habe sich geändert – mit Bezug auf die Testsuite (oben) :

  • Der Titel der Spalte B, C, D und E wurde erweitert, um das 1. Struktur- oder Array-Element im Testfall zu spezifizieren. Beispiel: input_array wurde zu input_array[0] und input_struct wurde zu input_struct.ele2 .

  • Die Spalte C, E, G und I wurde eingefügt, um das 2. Struktur- oder Array-Element im Testfall zu spezifizieren. Beispiel: input_array[1] und input_struct.ele2

Wie üblich, wurden im Arbeitsblatt für den Testfall auch die Testsequenzen und Testdaten eingetragen .
images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg Da der Testfall alle Spalten für die Struktur- und Array-Elemente enthält, sind in diesem Beispiel keine Anpassungen im Arbeitsblatt Defaults erforderlich.

Wenn Sie diesen Testfall ausführen, zeigt die Konsole PASS als Ergebnis der Testausführung an.
Da der Testfall Struktur- und Array-Elemente enthält wird b ei der Ausführung eine Warnung angezeigt, dass das Testframework nicht prüft, ob der Testfall jedes Element für diese Eingabevariablen enthält. Diese Warnung können Sie für dieses Beispiel ignorieren.