Las testings de Kotlin fallan desde la línea de command con ClassNotFoundException pero funcionan desde IntelliJ

Tengo un proyecto de Kotlin Spring Boot aquí . Tiene algunas testings, que funcionan bien desde IntelliJ, pero cuando corro desde la línea de command, fallan con los siguientes errores.

BUILD FAILED in 1m 12s 7 actionable tasks: 7 executed asarkar:license-report-kotlin$ ./gradlew clean test > Task :compileKotlin Using kotlin incremental comstacktion > Task :compileTestKotlin Using kotlin incremental comstacktion > Task :test 2017-07-16 21:43:06.345 INFO 2956 --- [ Thread-13] scaAnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@54fa5525: startup date [Sun Jul 16 21:42:04 PDT 2017]; root of context hierarchy org.abhijitsarkar.ApplicationTest > testEndToEnd FAILED java.lang.AssertionError at ApplicationTest.kt:83 org.abhijitsarkar.service.GradleAgentTest > initializationError FAILED java.lang.ClassNotFoundException org.abhijitsarkar.service.JGitAgentTest > initializationError FAILED java.lang.ClassNotFoundException org.abhijitsarkar.service.LinkVerifierTest > initializationError FAILED java.lang.ClassNotFoundException 4 tests completed, 4 failed FAILURE: Build failed with an exception. 

Lo que he intentado hasta ahora:

  1. Se movió hacia adelante y hacia atrás entre build.gradle y build.gradle.kts .
  2. Se agregó el time de ejecución de Kotlin al jar kotlinOptions.includeRuntime = true .
  3. Se cambiaron las funciones de nivel de package a funciones en un object.

Lo que encontré extraño:

  1. Se crea out directory de out además del directory de build habitual de Gradle.
  2. Algunas classs / objects se comstackn en files de class con nombres que terminan en Kt . No he encontrado ninguna rima o razón para esto, pero todavía soy nuevo para Kotlin, por lo que me puede estar perdiendo algo.

Sus testings (o las classs reales probadas) hacen algo extraño: eliminan de alguna manera el contenido de la carpeta de build que contiene las classs de testing.

Para ver esto, intente lo siguiente:

 ./gradlew clean testClasses find build # You get a full list of all main and test classes ./gradlew clean testClasses test find build # You get a very limited list of resources in the build-folder (must be somehow modified by your code) 

Si desactiva todas sus testings y solo agrega lo siguiente (solo para fines de testing) allí:

 import io.kotlintest.matchers.* import io.kotlintest.specs.* class MyTests : StringSpec() { init { "length should return size of string" { "hello".length shouldBe 5 } } } 

Si vuelves a probarlo,

 ./gradlew clean testClasses test find build # all resources again available 

Verifique sus testings para el problema.

  • Loop JPA array sin activar Lob fetch
  • @DataJpaTest y @Async El método CRUDRepository no funciona en set
  • Kotlin y Spring Boot @ConfigurationProperties
  • El comstackdor de Kotlin se queja de usar una expresión SPeL en una definición de propiedad. ¿POR QUÉ?
  • Almacenar datos en BEAN (Spring Boot REST)
  • java.lang.NoSuchMethodException: com ... Employee. <init> ()
  • cómo cargar config en spring-webflux sin spring-boot?