Testen im Lua-Track

Lerne, wie du deine Lua-Übungen auf Exercism testest


Führe deine Tests so aus:

$ busted

Wie du busted installierst, erfährst du unter Lua lokal installieren.

Unit-Tests debuggen

Diese Anleitung zeigt dir, wie du VSCode mit dem Test-Framework Busted und dem Local Lua Debugger einrichtest, sodass du sowohl in der Test-Spezifikation als auch in der Datei, die sie testet, Haltepunkte setzen kannst. So wird ein unkomplizierter Test Driven Development-Workflow möglich. Das ist nicht der einzig wahre Weg, es gibt viele Methoden, die funktionieren können, aber diese hier bringt dich zumindest zum Laufen (Hinweis: Das wurde unter Windows 10 und Ubuntu 20.04 getestet und funktioniert dort).

Nachdem wir den Fachjargon beiseitegeschoben haben, legen wir los.

Du kannst diese Teile überspringen, sie dienen nur der Erklärung des Ablaufs.

Entferne oder deaktiviere in VSCode alle anderen Lua-Debugger-Erweiterungen und installiere den Local Lua Debugger. Erstelle dann eine eigene Startkonfiguration wie diese:

{
	"name": "Busted",
	"type": "lua-local",
	"request": "launch",
	"program": {
		"command": "busted"
	},
	"cwd": "${workspaceFolder}/${relativeFileDirname}",
	"args": ["${file}"],
	"integratedTerminal": true
}

Hinweis: Die Eigenschaft integratedTerminal erzeugt eine Warnung mit dem Text Property integratedTerminal is not allowed, aber die kannst du getrost ignorieren.

Die Eigenschaft cwd legt das aktuelle Arbeitsverzeichnis fest, das ist wichtig für die Auflösung von Pfaden. Standardmäßig installiert Exercism jede Übung in einen eigenen Ordner unterhalb des Ordners mit dem Track-Namen. Für Lua sieht das so aus:

└── Exercism/
    ├── lua/
    │   ├── armstrong-numbers
    │   ├── bank-account
    │   ├── binarysearch
    │   └── etc...
    └── python/
        └── etc...

Wenn wir also VSCode aus dem Ordner /lua heraus so öffnen:

C:\users\<username>\Exercism\lua> code .

oder

/home/<username>/exercism/lua> code .

zeigt VSCode jede Übung in ihrem eigenen Ordner im Arbeitsbereich an. Das bedeutet, dass die Startkonfiguration das aktuelle Arbeitsverzeichnis cwd auf jeden einzelnen Übungsordner ändern muss. Das erreichen wir mit einer Kombination aus den VSCode-Variablen ${workspaceFolder} und ${relativeFileDirname}.

Die Eigenschaft args bestimmt, welches Argument an Busted übergeben wird. Hier verwenden wir die Variable ${file}, um die aktuell geöffnete Datei anzugeben.

Füge dann diese drei Zeilen oben in die Testdatei der Übung ein, an der du arbeitest, sie heißt <exercise_name>_spec.lua:

if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
  require("lldebugger").start()
end

Wenn du jetzt die Tests mit dem Debugger ausführen möchtest, öffne die Testdatei und starte dann die eben erstellte Startkonfiguration über die Seitenleiste Run and Debug (Ctrl+Shift+D) auf der linken Seite. Wenn die Testdatei im Fokus ist, führt die Startkonfiguration diese Tests aus, hält an Haltepunkten an und gibt die Ausgabe im Tab DEBUG CONSOLE im integrierten Terminal unten aus.

Viel Spaß beim Programmieren!