describe- und it-Blöcke
Strukturieren Sie eine Testsuite.
describe- und it-Blöcke ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Aufbau einer Spec
busted organisiert Tests mit zwei zentralen Funktionen: describe und it. Ein describe-Block gruppiert zusammengehörige Tests, und jeder it-Block ist ein einzelner Testfall.
Diese Struktur stammt aus der verhaltensgetriebenen Entwicklung und liest sich wie gewöhnliches Englisch.
describe("Stack", function()
it("starts empty", function()
assert.are.equal(0, Stack.new():size())
end)
end)Der describe-Block
describe erhält einen Namens-String und eine Funktion. Der Name sollte die getestete Einheit oder Funktion identifizieren, etwa ein Modul oder eine Klasse.
Alles innerhalb der Funktion gehört zu dieser Gruppe. Der Name erscheint in der Testausgabe und strukturiert die Ergebnisse.
describe("calculator", function()
-- tests live here
end)Der it-Block
Jeder it-Block beschreibt ein bestimmtes Verhalten. Der String sollte den mit describe begonnenen Satz vervollständigen.
Zusammen gelesen ergeben „calculator“ und „adds two numbers“ eine klare Spezifikation der Absicht.
describe("calculator", function()
it("adds two numbers", function()
assert.are.equal(5, calc.add(2, 3))
end)
end)describe-Blöcke verschachteln
Sie können describe-Blöcke verschachteln, um einen Kontext auszudrücken. Ein innerer Block kann beispielsweise eine bestimmte Methode oder eine besondere Bedingung beschreiben.
Durch die Verschachtelung bleiben zusammengehörige Fälle gruppiert, und die Ausgabe wird übersichtlich eingerückt.
describe("List", function()
describe("push", function()
it("adds an item", function()
assert.are.equal(1, list:push("a"):size())
end)
end)
end)before_each-Setup
before_each führt vor jedem it-Block innerhalb seines Blocks eine Funktion aus. Verwenden Sie es, um frische Testdaten zu erstellen, damit Tests keinen Zustand gemeinsam nutzen.
So bleibt jeder Test isoliert. Eine Änderung in einem Test kann nicht in den nächsten übergreifen.
describe("Stack", function()
local s
before_each(function()
s = Stack.new()
end)
it("pushes", function()
s:push(1)
assert.are.equal(1, s:size())
end)
end)after_each-Teardown
after_each wird nach jedem Test ausgeführt. Verwenden Sie es, um Ressourcen wie temporäre Dateien, offene Verbindungen oder globalen Zustand aufzuräumen.
Durch die Kombination von Setup und Teardown wird die Umgebung zwischen den Tests zurückgesetzt.
after_each(function()
os.remove("temp.db")
end)setup und teardown
busted bietet außerdem setup und teardown. Diese werden einmal pro describe-Block statt einmal pro Test ausgeführt.
Verwenden Sie sie für aufwendige einmalige Arbeiten, etwa das Öffnen einer gemeinsam genutzten Verbindung, wenn ein Setup pro Test unnötig aufwendig wäre.
describe("db", function()
setup(function()
db = connect()
end)
teardown(function()
db:close()
end)
end)Ausstehende Tests
Manchmal möchten Sie einen Test vermerken, den Sie noch nicht geschrieben haben. Rufen Sie pending mit einer Beschreibung auf oder schreiben Sie einen it-Block ohne Funktion.
busted meldet diese Tests als ausstehend, statt sie als bestanden oder fehlgeschlagen zu markieren, und erinnert Sie so daran, sie fertigzustellen.
it("handles unicode", function()
pending("not implemented yet")
end)Tests fokussieren und ausschließen
Während des Debuggens können Sie sich auf eine Teilmenge der Tests konzentrieren. Mit --tags in der Befehlszeile oder den Hilfsfunktionen von busted können Sie nur die relevanten Tests ausführen.
So vermeiden Sie es, während der Arbeit an einem fehlerhaften Bereich jedes Mal die gesamte Testsuite auszuführen.
-- run only tests tagged 'fast'
-- busted --tags=fastNamenskonventionen
Gute Namen machen Fehler selbsterklärend. Beginnen Sie describe mit dem Gegenstand und it mit einem Verb, das das Verhalten beschreibt.
Vermeiden Sie vage Namen wie „works“ oder „test1“. Ein fehlschlagender Test sollte sich wie ein Fehlerbericht lesen, mit dem Sie direkt arbeiten können.
describe("parser", function()
it("rejects malformed input", function()
assert.has_error(function() parser.parse("{") end)
end)
end)Alles zusammenführen
Eine vollständige Spec kombiniert describe-Gruppen, before_each-Setup und fokussierte it-Fälle. Dieses Grundgerüst lässt sich von einem Test auf Hunderte erweitern.
Halten Sie die Blöcke klein, und konzentrieren Sie jedes it auf ein einzelnes Verhalten, damit die Ausgabe möglichst klar bleibt.
describe("Account", function()
local acc
before_each(function() acc = Account.new(100) end)
it("withdraws funds", function()
acc:withdraw(40)
assert.are.equal(60, acc.balance)
end)
end)Kurzer Test
Testen Sie, ob Sie die Blockstruktur von busted verstanden haben.
Zusammenfassung
describe gruppiert zusammengehörige Tests, und it definiert einen einzelnen Fall, der sich wie eine Spezifikation liest. Verschachteln Sie describe-Blöcke, um den Kontext auszudrücken.
Verwenden Sie before_each und after_each zur Isolation pro Test sowie setup und teardown für Arbeiten, die einmal pro Block ausgeführt werden. Kennzeichnen Sie noch nicht fertiggestellte Arbeiten mit pending.
Häufig gestellte Fragen
Ist die Lektion „describe- und it-Blöcke“ kostenlos?
Ja — der vollständige Text von „describe- und it-Blöcke“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „describe- und it-Blöcke“?
Strukturieren Sie eine Testsuite. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „describe- und it-Blöcke“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Warum testen
- describe- und it-Blöcke
- Assertions
- Mocks und Spies