Wie verwalte ich die unit test Ressourcen in Kotlin, wie das starten/stoppen Sie eine Datenbank-Verbindung oder eine eingebettete elasticsearch server?

In meinem Kotlin JUnit-tests, ich möchte die start/Stopp-embedded-Server und verwenden Sie Sie innerhalb meiner tests.

Versuchte ich mit JUnit @Before annotation an einer Methode in meiner test-Klasse und es funktioniert gut, aber es ist nicht das richtige Verhalten, da läuft jeder test statt nur einmal.

Daher möchte ich die @BeforeClass annotation an einer Methode, aber indem es um eine Methode, führt zu einer Fehlermeldung, die sagen, es muss über eine statische Methode. Kotlin, scheint noch nicht in statischen Methoden. Und dann das gleiche gilt für statische Variablen, weil ich brauche, um einen Verweis auf den embedded-server, um für den Einsatz in den test-Fällen.

Also wie erstelle ich diese eingebettete Datenbank nur einmal für alle meine Testfälle?

class MyTest {
    @Before fun setup() {
       //works in that it opens the database connection, but is wrong 
       //since this is per test case instead of being shared for all
    }

    @BeforeClass fun setupClass() {
       //what I want to do instead, but results in error because 
       //this isn't a static method, and static keyword doesn't exist
    }

    var referenceToServer: ServerType //wrong because is not static either

    ...
}

Hinweis: diese Frage ist absichtlich geschrieben und beantwortet der Autor (Selbst Beantwortete Fragen), so dass die Antworten auf Häufig gestellte Kotlin Themen vorhanden sind, in SO.

Schreibe einen Kommentar