Котлин.Micronaut.TestNG тест не проходит в IDEA, но проходит через Gradle - PullRequest
0 голосов
/ 01 июня 2018

Я создал пример проекта для микронавтов с простым тестом testNG, основанным на этой инструкции.

Тест работает отлично, когда я запускаю его через gradle из командной строки, но не удается, когда я пытаюсьзапустите его из IDEA.

Для успешного запуска gradle в журналах я вижу маршрутизацию для моего контроллера:

    13:40:44.314 [Test worker] DEBUG i.m.web.router.DefaultRouteBuilder - Created Route: GET /hello -> HelloController#String index() (application/json )

, которая отсутствует для запуска IDEA.

ВОПРОС: Что мне нужно настроить, чтобы тест также проходил в IDEA?

sources

src / main / kotlin / example / micronaut / Application.kt:

package example.micronaut

import io.micronaut.runtime.Micronaut

object Application {

    @JvmStatic
    fun main(args: Array<String>) {
        Micronaut.build()
                .packages("example.micronaut")
                .mainClass(Application.javaClass)
                .start()
    }
}

src / main / kotlin / example / micronaut / HelloController.kt:

package example.micronaut

import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get

@Controller("/hello")
class HelloController {

    @Get("/")
    fun index(): String {
        return "Hello World"
    }
}

src / test / kotlin / example / micronaut / HelloTest.kt:

package example.micronaut

import io.micronaut.context.ApplicationContext
import io.micronaut.http.client.HttpClient
import io.micronaut.runtime.server.EmbeddedServer
import org.testng.annotations.AfterMethod
import org.testng.annotations.BeforeMethod
import org.testng.annotations.Test

class HelloTest {

    lateinit var embeddedServer: EmbeddedServer
    lateinit var client: HttpClient

    @BeforeMethod
    fun init() {
        embeddedServer = ApplicationContext.run(EmbeddedServer::class.java)
        client = HttpClient.create(embeddedServer.url)
    }

    @Test
    fun check() {
        val response: String = client.toBlocking().retrieve("/hello")
        assert(response == "Hello World")
    }

    @AfterMethod
    fun cleanup() {
        client.close()
        embeddedServer.close()
    }

}

build.gradle:

buildscript {
    repositories {
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "com.github.jengelman.gradle.plugins:shadow:2.0.4"
        classpath "io.spring.gradle:dependency-management-plugin:1.0.5.RELEASE"
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.15"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.31"
    }
}

version "0.1"
group "example"

apply plugin:"io.spring.dependency-management"
apply plugin:"com.github.johnrengelman.shadow"
apply plugin:"application"
apply plugin:"java"
apply plugin:"net.ltgt.apt-eclipse"
apply plugin:"net.ltgt.apt-idea"
apply plugin:"kotlin"
apply plugin:"kotlin-kapt"


repositories {
    mavenLocal()
    mavenCentral()
    maven { url "https://jcenter.bintray.com" }
}

dependencyManagement {
    imports {
        mavenBom 'io.micronaut:bom:1.0.0.M1'
    }
}

dependencies {
    annotationProcessor "io.micronaut:inject-java"
    compile "io.micronaut:http-client"
    compile "io.micronaut:http-server-netty"
    compile "io.micronaut:inject"
    compile "io.micronaut:runtime"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.31"
    compile "org.jetbrains.kotlin:kotlin-reflect:1.2.31"
    compileOnly "io.micronaut:inject-java"
    kapt "io.micronaut:inject-java"
    runtime "ch.qos.logback:logback-classic:1.2.3"

    testCompile "io.micronaut:inject-java"

    testImplementation("org.testng:testng:6.13.1")
}

shadowJar {
    mergeServiceFiles()
}

mainClassName = "example.micronaut.Application"
compileJava.options.compilerArgs += '-parameters'
compileTestJava.options.compilerArgs += '-parameters'

test {
    useTestNG()
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Решено

исправлено путем установки Gradle в качестве тестового бегуна, как описано в http://mrhaki.blogspot.com/2016/03/gradle-goodness-configure-intellij-idea.html

1 Ответ

0 голосов
/ 03 июля 2018

В настоящее время для сборки приложений Kotlin + Micronaut требуется инструмент сборки, пока IntelliJ не предоставит встроенную поддержку Kapt.Это объясняется здесь https://docs.micronaut.io/latest/guide/index.html#kotlin в разделе «Kotlin, Kapt and IntelliJ»

...