Wie teste ich Tests, die eine Kotlin-Datei kompilieren, und überprüfe das Ergebnis?

8

Bisher habe ich

%Vor%

Dies startet den Compiler manuell, aber ich möchte den resultierenden String aus dem ersten Compiler ( MyProjectCompiler , der Kotlin-Quelle generiert) im Arbeitsspeicher kompilieren und das Ergebnis überprüfen, ohne in eine Datei zu schreiben.

Ich möchte wenn möglich alles in den aktuellen Klassenpfad aufnehmen.

    
Preston Garno 25.08.2017, 19:12
quelle

2 Antworten

1

Ich fand den einfachsten Weg, etwas wie den Code in der ursprünglichen Frage zu verwenden und java.io.tmpdir zu verwenden. Hier ist eine wiederverwendbare Lösung:

Fügen Sie den Kotlin-Compiler als Testabhängigkeit hinzu:

%Vor%

Wrapper für den Compiler:

%Vor%

Classloader zum Erstellen von Objekten aus den kompilierten Klassen:

%Vor%

Beispiel für einen Testfall:

Erstellen Sie zuerst eine Kotlin-Quelldatei

%Vor%

Stellen Sie sicher, dass es kompiliert:

%Vor%

Laden Sie die Klasse als Schnittstelleninstanz

%Vor%

Die Ausgabe ist wie erwartet: found: 'Hello, world!'

    
Preston Garno 17.09.2017, 17:00
quelle
0

Wenn Sie die Quelle der Klasse K2JVMCompiler lesen, scheint der Compiler nur die Kompilierung für Dateien zu unterstützen. Bei genauerem Hinsehen erscheint es zu kompliziert, die Einträge von org.jetbrains.kotlin.codegen.KotlinCodegenFacade static method compileCorrectFiles zu fälschen.

Sie können davon ausgehen, dass Sie dafür ein Dateisystem verwenden. Eine temporäre RAM-Disk kann Ihren Anforderungen entsprechen. (Dies ist zum Beispiel eingebautes MacOS )

    
Xvolks 02.09.2017 20:46
quelle

Tags und Links