Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man Setup- und Demontagemethoden beim Testen von Go paketübergreifend teilen?

Wie kann man Setup- und Demontagemethoden beim Testen von Go paketübergreifend teilen?

王林
王林nach vorne
2024-02-15 09:50:071004Durchsuche

在测试 Go 时如何跨包共享设置和拆卸方法?

Das Teilen von Einrichtungs- und Abbaumethoden über Pakete hinweg ist ein häufiges Problem beim Testen von Go. PHP-Editor Yuzai wird diese Frage für Sie beantworten. In der Go-Sprache können Sie das Paket „flag“ verwenden, um Befehlszeilenparameter festzulegen und abzurufen. Durch die Verwendung der Funktion „flag.Parse()“ in der Testdatei können die Befehlszeilenparameter analysiert und in die entsprechenden Variablen gesetzt werden. Für Testszenarien, die gemeinsame Einstellungen erfordern, können globale Variablen in der Testdatei festgelegt und in jeder Testfunktion verwendet werden. Wenn der Test abgeschlossen ist, können Sie ihn in der Funktion „TestMain“ zerlegen und den ursprünglichen Einstellungszustand wiederherstellen. Dies ermöglicht gemeinsame Einrichtungs- und Abbaumethoden über Pakete hinweg.

Frageninhalt

Angenommen, ich habe zwei Pakete foobar. Jedes Paket enthält eine Datei und eine Testdatei:

foo
---widget.go
---widget_test.go
bar
---wingding.go
---wingding_test.go

Für diese beiden Tests (widget_test.go und Wingding_test.go) möchte ich nun etwas Setup-Code teilen. Ich weiß, dass ich diesen Code in jedes Paket in main_test.go einfügen kann. Aber ich möchte den Code natürlich nicht an zwei Stellen kopieren/einfügen. Wo kann ich diesen Code ablegen, damit er von Paketen gemeinsam genutzt werden kann?

Workaround

Fügen Sie es in foobar 在测试中导入的另一个包 baz ein anderes Paket baz ein, das im Test importiert wurde. Wir verwenden dies für den Datenbank-Setup- und Teardown-Code in unseren Tests.

Das obige ist der detaillierte Inhalt vonWie kann man Setup- und Demontagemethoden beim Testen von Go paketübergreifend teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen