Wenn ich mich umsehe, gibt es Leute, die davon abhängig sind, also dachte ich, es wäre gut, wenn ich nicht stolpern würde.
plötzlich
spock Ich werde es nicht im Detail erklären, aber es gibt einige Setup-Bereinigungen und einen Ort zum Definieren von Testdaten, der als where bezeichnet wird.
Schließen Sie schnell ab Mit einem Tisch und einem Bild
Definition | zeitliche Koordinierung | Bemerkungen |
---|---|---|
setupSpec | Prüfung[Klasse]Am Anfang von[Einmal]Bewegung | äquivalent zu statisch |
setup | Prüfung[Daten] [Jeder]Bewegt sich zuerst | |
cleanup | Prüfung[Daten] [Jeder]Letzter Zug nach | |
cleanupSpec | Prüfung[Klasse]Am Ende von[Einmal]Bewegung | äquivalent zu statisch |
where | Prüfung[Methode]Am Anfang von[Für Daten]Bewegung | äquivalent zu statisch |
Grüne Buchstaben sind statisch und rote Buchstaben sind andere, von links gelesen
Zwei große
static Da dies der statischen entspricht, kann die Initialisierungsverarbeitung mit beispielsweise "@ Autowired" -Variablen nicht mit "setupSpec / cleanupSpec" aufgerufen werden.
Kann nicht von "wo" verwendet werden
Seien Sie vorsichtig, da dies normalerweise der Fall ist
Es gibt viele hier
Insbesondere beim Erstellen von Testdaten, die jetzt usw. betreffen, gibt es Fälle, in denen der Test nicht wie erwartet erstellt und der Test abgeschlossen werden kann.
Wenn Sie beispielsweise Code schreiben, der die Systemuhr in "setup" verfälscht, erstellen Sie Testdaten, einschließlich "now in" where ", und führen Sie einen Mustertest durch. Die Reihenfolge besteht darin, die Systemuhr nach dem Erstellen der Testdaten zu manipulieren, damit sie nicht den Erwartungen entspricht.
Verschieben Sie in diesem Fall das Setup nach setupSpec
Wenn das Setup beispielsweise nicht innerhalb der statischen Verarbeitung durchgeführt werden kann, verzögert das Einschließen der Daten auf der "Where" -Seite mit "{}" und das Hinzufügen von "()" auf der "Expect" -Seite die Ausführung, aber Wenn Sie etwas Technisches mit Testcode machen möchten ** Meistens ist der Produktcode (= Design) ** falsch, also lassen Sie uns ihn gehorsam umgestalten
Es ist schnell vorbei
In diesem Fall funktioniert es in der Reihenfolge mkData ()
-> setClock ()
def setup() {
setClock()
}
def test() {
expect:
sut.f(data) == exp
where:
data || exp
mkData() || ...
}
Mach das
def setupSpec() {
setClock()
}
def test() {
expect:
sut.f(data) == exp
where:
data || exp
mkData() || ...
}
Dies funktioniert in der Reihenfolge setClock ()
-> mkData ()
def setup() {
setClock()
}
def test() {
expect:
sut.f(data()) == exp
where:
data || exp
{ mkData() } || ...
}
Im Moment ist es jedoch viel einfacher zu testen, indem Sie es als Argument übergeben, als es intern in "sut.f" zu generieren. Es ist daher besser, zurück zu gehen, um die vorhandene Konstruktion zu überprüfen.
def test() {
expect:
sut.f(data, date(2020, 3, 1)) == exp
where:
data || exp
mkData() || ...
}