¿Cómo puedo get mis testings JUnit para comstackr y ejecutar en mi proyecto Kotlin + Gradle?

Creé un proyecto de Kotlin + Gradle según esta pregunta anterior . Agregué dos files fuente a él:

src / HelloWorld.kt

package com.example.hello fun main(args : Array<String>) { println("Hello, world!") } 

testings / HelloWorldTest.kt

 package com.example.hello import org.junit.Assert import org.junit.Test class HelloWorldTest { @Test fun testPasses() { Assert.assertTrue(true) } @Test fun testFails() { Assert.assertTrue(false) } } 

También marqué el directory src/ como raíz de fonts y como raíz de fonts de testing.

Si creo exactamente la misma estructura de directorys con estos files fuente en otro lugar y creo un proyecto IntelliJ que no sea de Gradle, puedo comstackr y ejecutar este código, incluidas las testings.

En mi versión de Gradle del proyecto, sin embargo, no puedo build las testings de IntelliJ IDEA. Obtengo los siguientes errores:

 Error:(3, 12) Kotlin: Unresolved reference: junit Error:(4, 12) Kotlin: Unresolved reference: junit Error:(7, 6) Kotlin: Unresolved reference: Test Error:(9, 9) Kotlin: Unresolved reference: Assert Error:(12, 6) Kotlin: Unresolved reference: Test Error:(14, 9) Kotlin: Unresolved reference: Assert 

Extrañamente, si gradle test (o ./gradlew test después de ./gradlew test la envoltura) la compilation tiene éxito sin error, pero las testings no se ejecutan.

  1. ¿Cómo agrego JUnit de tal manera que IntelliJ IDEA pueda verlo?
  2. ¿Cómo hago para que Gradle ejecute las testings?
  3. ¿Por qué IntelliJ IDEA y Gradle se comportan de manera diferente y cómo puedo asegurarme de que tengan el mismo comportamiento cuando construya o ejecute testings en el futuro?

Necesita agregar JUnit como una dependencia a su build.gradle (ámbito raíz):

 dependencies { //... testCompile "junit:junit:4.12" } 

Es un poco más complicado para Junit 5, requiere configurar el complemento JUnit Gradle en build.gradle

  1. Dado que IntelliJ IDEA interpreta su proyecto Gradle y sincroniza su representación interna del proyecto con el proyecto Gradle, después de una actualización verá JUnit en el classpath de las testings.

  2. Gradle ejecutará las testings si ejecuta la tarea de test , ya sea ejecutando la gradlew test en la terminal o en IntelliJ IDEA: proyectos Gradle (panel a la derecha)Tareasverificacióntesting .

  3. Como se dijo en el n. ° 1, IntelliJ IDEA tiene su propia representación de proyecto, y puede diferir de lo que importa del proyecto Gradle (por ejemplo, si marcas manualmente como directorys de fonts diferentes a los que define el layout del proyecto Gradle).

    Puede hacer que IntelliJ IDEA sincronice su estructura de proyecto con su build.gradle ejecutando la acción Actualizar todos los proyectos de Gradle (se puede encontrar en el panel de proyectos de Gradle ) o habilite Usar import automática para su proyecto de Gradle en Configuración.

  • Herencia de Kotlin: pasa esto como argumento de constructor
  • Kotlin Dagger 2 no puede proporcionar Interactor
  • ¿Qué significa este error cuando se convierte del código java a genérico en kotlin, prohibición única después de T?
  • En Android Java / Kotlin, ¿la implementación de una interfaz le da acceso directo a las variables locales de la class de anidación?
  • ¿Cómo burlarse del object de Kotlin usando Mockito / PowerMockito?
  • Procesamiento de annotations con el estudio Android Kapt
  • código inalcanzable kotlin cuando se usa finalmente y enum
  • Retrollamada Glide después del éxito en Kotlin
  • Jackson Mixins con Kotlin
  • Opciones de StyleGuide para Kotlin
  • solo se permiten classs en el lado izquierdo de una class literal