Auf Nummer sicher gehen: Testen Sie Ihre SOLIDWORKS Anwendungen

1. Einführung

Um ein gutes Programm zu schreiben ist es wichtig, dass es getestet wird. Hierfür kann man manuell die Ergebnisse testen, ob alles funktioniert hat oder man schreibt Test. In C# ist es dafür möglich Unit-Tests zu schreiben und in diesem TecTip möchte ich erklären, wie ein möglicher Ansatz sein könnte. Als Ausgangslage dient der vorherige TecTip für das Bearbeiten der Variablen in SOLIDWORKS.

2. Projektaufbau

Um SolidWorks Funktionen zu testen, kann natürlich ein eigenes Programm genommen werden, in diesem TecTip wird jedoch das vorhandene genommen und der Repository heruntergeladen und in Visual Studio geöffnet.

Repository herunterladen

Anschliessend wird ein Testprojekt hinzugefügt, wie im folgenden Bild.

Abbildung 1: Testprojekt

 

Diesem Projekt kann ein belieber Name gegeben werden. Um dieses Projekt besser zu identifizieren wird diesem Projekt der gleiche Name wie dem Projekt zugewiesen, wie dem Projekt, welches getestet wird mit dem Suffix Test. Nachdem das Projekt erstellt ist, kann eine Referenz zu dem zu testenden Projekt hinzugefügt werden.

Abbildung 2: Referenz auf das Hauptprojekt

3. Schreiben von Tests

Als Erstes wurde das vorhandene Projekt so angepasst, dass die Funktionen nicht direkt in der Klick-Methode des Buttons aufgerufen werden, sondern jede Funktion ihre eigene Methode besitzt. Ebenfalls werden diese Methoden nun mit Parametern aufgerufen, damit dies dynamischer funktioniert. Am besten wird dies noch in einer extra Klasse geschrieben.

Jetzt kann die UnitTest1 Klasse aufgerufen werden. Dort kann man sehen, dass diese Klasse jeweils ein Attribut [TestClass] sowie [TestMethod] besitzt, damit diese als Test identifiziert werden können. Die bestehende TestMethod1 wird umbenannt und es werden insgesammt 4 Methoden erstellt. Für jede Operation jeweils eine. Damit beim Schreiben der Tests keine Schreibfehler entstehen, welche die Tests zu einem falschen Ergebnis führen könnten, werden hierfür Variablen definiert, die anschliessend in den Test verwendet werden. Hierfür werden 4 Variablen definiert.

  • TestVariable – um zu definieren, mit welcher Variable getestet werden soll.
  • TestValue – um einen Wert zu definieren, welchen die Variable haben darf
  • TestFalseValue – um einen Wert zu definieren, welche die Variable nicht
    haben darf
  • TestUpdateValue – um einen geänderten Wert zu definieren

 

Nun kann die erste Methode geschrieben werden. Für die Methode zum Erstellen einer Variable wird jetzt die Funktion aufgerufen. Eine Möglichkeit zu prüfen, ob dies geklappt hat, wäre zum einen diese so umzuschreiben, dass sie einen Rückgabewert besitzt, oder es wird versucht, die erstellte Variable zu lesen. Hier ist natürlich Achtung geboten. Ist die Methode zum Lesen fehlerhaft, wird diese auch ein fehlerhaftes Ergebnis liefern. Mit Assert kann angegeben werden, welcher Wert erwartet wird. Bei dieser Methode wird erwartet, dass die erstellte Variable mit dem definierten Wert natürlich auch den definierten Wert liest.

Die zweite Methode soll das Lesen testen. Hierzu muss natürlich vorher eine Variable zur Verfügung stehen. Entweder erstellt man diese manuell oder man verwendet die Methode zum Erstellen der Variable. Auch hier ist natürlich wieder die Gefahr, wenn die Methode für das Erstellen fehlerhaft ist, wird diese auch fehlerhaft sein. Damit die Methode nicht gleich aufgebaut ist wie die zum Erstellen, erwarten wir nun, dass der Wert nicht gleich ist, wie der falsche Wert. Diese Methode könnte man also auch weglassen, da die Funktion mit der Create Methode eigentlich schon abgedeckt ist. Um aber eine andere Überprüfung darzustellen, wird diese eingefügt.

Die dritte Methode ist zum Updaten der Variable. Hier wird zuerst wieder eine Variable erstellt, mit einem vordefinierten Wert. Anschliessend wird die UpdateVariable Methode aufgerufen und der Variable ein neuer Wert zugewiesen. Hier können wir auch wieder mit dem Lesen der Variable überprüfen, ob der neue Wert eingetragen wurde.

Die letzte Methode ist zum Löschen. Es wird eine Variable erstellt und diese anschliessend wieder gelöscht. Wird beim Lesen ein leerer String zurückgegeben, wurde die Variable gelöscht.

Es gibt verschiedene Möglichkeiten, das Assert anzuwenden. So kann man zum Beispiel auf NULL überprüfen, oder ob eine Exception geworfen wird oder nicht. Welche verschiedene Möglichkeiten es gibt, werden auch in der Dokumentation beschrieben.

Zur Dokumentation

4. Ergebnis

Sind alle Tests geschrieben, muss eine SolidWorks Datei geöffnet werden und man kann die Tests mit einem Rechtsklick starten. Nun wird der Test Explorer geöffnet und es benötigt einen Augenblick, bis alles durchgelaufen ist. Anschliessend wird das Ergebnis dargestellt und gegebenfalls die Fehlermeldung angezeigt.

Abbildung 3: Ergebnisse des Test Explorers

Der komplette Code kann wie immer von unserem Repository heruntergeladen werden.

Zum Repository

Autor des Artikels

Martin Bartolome, Application Engineer bei Visiativ Switzerland