¿Por qué Intellij IDEA de repente ya no reconoce las pruebas en la carpeta de prueba?

9 minutos de lectura

Avatar de usuario de Djordje Ivanovic
Djordje Ivanovic

Estoy usando JUnit desde que comencé este proyecto y todo funciona bien. Tengo un par de cientos de pruebas y, por supuesto, aquí y allá las empiezo todas. Haga clic derecho en la carpeta de prueba raíz, ejecute (o depure) con JUnit. Pero desde ayer, cuando hago eso, el resultado es:

Process finished with exit code 0

sin iniciar ninguna de las pruebas. Lo mismo ocurre con cualquier carpeta en el árbol de carpetas. Todavía puedo ejecutar una sola clase de prueba, pero realmente necesito una opción para iniciarlas todas. Si alguno de ustedes tiene alguna idea, por favor déjela aquí.

Esto es lo que se registra cuando intento ejecutar pruebas:

2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - IntelliJ IDEA 11.1.2  Build #IU-117.418 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - JDK: 1.6.0_31 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - VM: Java HotSpot(TM) Client VM 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - Vendor: Sun Microsystems Inc. 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - OS: Windows 7 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - Last Action: RunClass 
2012-10-31 15:16:55,693 [2727217]  ERROR - m.intellij.util.ExecutorsQuery - com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType 
java.lang.ClassCastException: com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType
    at com.intellij.psi.impl.source.PsiFileImpl.calcStubTree(PsiFileImpl.java:976)
    at com.intellij.psi.stubs.StubIndexImpl$1.perform(StubIndexImpl.java:239)
    at com.intellij.psi.stubs.StubIndexImpl$1.perform(StubIndexImpl.java:220)
    at com.intellij.util.indexing.ValueContainer.forEach(ValueContainer.java:60)
    at com.intellij.psi.stubs.StubIndexImpl.process(StubIndexImpl.java:220)
    at com.intellij.psi.stubs.StubIndexImpl.get(StubIndexImpl.java:194)
    at com.intellij.psi.stubs.AbstractStubIndex.get(AbstractStubIndex.java:33)
    at com.intellij.psi.impl.java.stubs.index.JavaAnnotationIndex.get(JavaAnnotationIndex.java:47)
    at com.intellij.psi.impl.search.AnnotatedElementsSearcher.a(AnnotatedElementsSearcher.java:93)
    at com.intellij.psi.impl.search.AnnotatedElementsSearcher.execute(AnnotatedElementsSearcher.java:44)
    at com.intellij.psi.impl.search.AnnotatedElementsSearcher.execute(AnnotatedElementsSearcher.java:28)
    at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.java:42)
    at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:67)
    at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.java:54)
    at com.intellij.execution.ConfigurationUtil.addAnnotatedMethodsAnSubclasses(ConfigurationUtil.java:97)
    at com.intellij.execution.ConfigurationUtil.findAllTestClasses(ConfigurationUtil.java:77)
    at com.intellij.execution.junit.TestPackage$MySearchForTestsTask.run(TestPackage.java:397)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:469)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:218)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:169)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.java:378)
    at com.intellij.openapi.application.impl.ApplicationImpl$6.run(ApplicationImpl.java:434)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:145)

  • ¿Su carpeta de prueba todavía está configurada para la prueba (color verde)? ¿Has deshabilitado maven o has hecho algunos cambios con él?

    – Aleatorio42

    31 de octubre de 2012 a las 12:24

  • Todavía es verde y cada ícono de subcarpeta tiene un pequeño punto verde. No hice cambios con maven. Además, desde ayer, cada vez que reinicio IDEA, el conector atlassian pierde la configuración actual y necesito agregarlo nuevamente.

    – Djordje Ivanovic

    31 de octubre de 2012 a las 13:04


  • Solucioné el problema con el conector atlassian, pero aún no puedo ejecutar pruebas desde la carpeta…

    – Djordje Ivanovic

    31 de octubre de 2012 a las 13:54

  • Controlar idea.log para excepciones (Ayuda | Revelar Iniciar sesión…). Intente ejecutar IDEA con la configuración predeterminada (cambie el nombre de sus directorios: devnet.jetbrains.net/docs/DOC-181).

    – CrazyCoder

    31 de octubre de 2012 a las 14:14

  • Agregué registro de error en la pregunta.

    – Djordje Ivanovic

    31/10/2012 a las 14:20

Avatar de usuario de Djordje Ivanovic
Djordje Ivanovic

Bien, lo arreglé.

En el menú, en Archivo, hay una opción de invalidar caché. ¡Eso lo arregló!

  • Esta opción de caché es una solución bastante impredecible. Espero que los desarrolladores de IDEA arreglen los casos o los automaticen para nosotros 🙂

    – Eugen Martínov

    2 de noviembre de 2012 a las 9:35

  • Esto no funciona para mí. 🙁 hay alguna otra solucion ?

    – Paresh

    30 de marzo de 2017 a las 23:49

  • Vamos, este es el aspecto más molesto de IntelliJ… buscar durante horas una solución, y luego esta respuesta predeterminada… similar a “reiniciar Windows”.

    – Cerebro

    8 sep 2021 a las 6:00

  • Deberíamos sugerir al equipo de Idea que cambie el nombre de ‘Invalidar caché’ a ‘Solucionar su problema mágicamente’

    – vudú_parche

    18 de marzo a las 20:17

En el IDE más reciente (a partir de Community Edition 2016.1), esta opción está más simplificada.

haga clic con el botón derecho en la carpeta que desea que se reconozca como carpeta de origen:

Marcar directorio como -> Raíz de fuentes

ingrese la descripción de la imagen aquí

  • pero si tiene un proyecto de varios módulos, es realmente imposible configurarlo en todas partes manualmente 🙁

    – chipiik

    20 de febrero de 2017 a las 15:31

  • Debe ser una raíz de fuentes de prueba; de lo contrario, su proyecto compilará las pruebas y las bibliotecas de prueba también para una versión.

    – Fran Marzoa

    23 de marzo de 2018 a las 18:23

  • Solo he “excluido” allí.

    – Línea

    7 de marzo de 2019 a las 16:18

  • Esto debería funcionar de inmediato y no es necesario configurarlo manualmente. Pero, en algunos casos, se me pidió que hiciera lo mismo.

    – Arefe

    23 de mayo de 2019 a las 7:56

  • Esta es la única solución que funcionó para mí. También marqué una “prueba->java” como “Raíz de fuentes de prueba”. Gracias.

    – Jonás Tornovsky

    30 de enero a las 17:41

Avatar de usuario de Volodymyr Dvornyk
Volodymyr Dvornyk

Por alguna razón, Intellij Idea no reconoce las clases como Clase de prueba que no son explícitamente públicas, en caso de que la clase tenga un especificador de acceso predeterminado, no se marcará como una prueba. Intenta cambiar de clase para cumplir con esta regla. Ejemplo:

public class TestMe {
   @Test
   public void shouldTest(){
      Assert.assertEquals("test", "test");
   }
}

  • Eso resolvió mi problema. Tiendo a mezclar la sintaxis de Python con la sintaxis de Java, y olvidé que las clases en Java deberían usar un modificador de acceso.

    – mgilsn

    10 de julio de 2020 a las 2:50

  • Las clases de prueba Y los métodos deben ser public. Esto solucionó los problemas para mí.

    – Tambor

    8 de marzo de 2021 a las 17:33


Avatar de usuario de João Matos
Juan Matos

Solo para agregar un escenario diferente, que me sucedió a mí y a algunos de mis compañeros de trabajo:

Alt+ingresar en la clase -> crear prueba: IJ (2017.1.1) propone Arquillian Junit como primera opción de biblioteca de prueba y lo acompaña la clase de prueba y los métodos se crean sin el identificador ‘público’. Entonces, si uno decide cambiar la biblioteca de prueba a JUnit, es fácil olvidarse de la ausencia del identificador ‘público’, lo que hace que IJ no reconozca las pruebas. Por supuesto, la solución es colocar los identificadores ‘públicos’.

Aunque esto no es lo que le sucedió a usted, tiene la misma consecuencia, por lo tanto, esta respuesta puede ayudar a otras personas que experimentan los mismos síntomas.

En mi caso, estamos pasando de JUnit 4 a JUnit 5 y mezclé el @Test de ellos.

En breve:

  • si utiliza @RunWith() de JUnit 4, debe usar @org.junit.Test para anotar los métodos de prueba.
  • si utiliza @ExtendWith() de JUnit 5, debe usar @org.junit.jupiter.api.Test en cambio.

Cuando cambio la importación, mi clase se puede ejecutar como clase de prueba nuevamente.

  • Volvió a ocurrir; luego encuentro que estoy usando JUnit 4 en main conjunto de fuentes y JUnit 5 en test conjunto de fuentes Aunque su alcance de dependencia es todo correcto en build.gradlesolo puedo ejecutar las pruebas JUnit 5 y tuve que eliminar las pruebas JUnit 4.

    – WesternGun

    30 de agosto de 2020 a las 0:36

  • Buen punto para prestar atención. Probé todas las opciones mencionadas en otras soluciones, incluida la adición public para probar la clase propuesta por @João Matos (que en realidad marcó la clase como una Test clase ejecutable, pero las pruebas aún no se ejecutaron). Entonces, la mejor manera fue copiar una de las pruebas de trabajo de otra no public clase de prueba en esta clase. En el momento en que lo hice, el @Test la anotación se importó utilizando un nombre completamente calificado que es diferente de todos los demás @Test anotaciones

    – usuario1927829

    21 de febrero de 2021 a las 9:14


Se corrigió esto varias veces al… abrir archivo –> estructura del proyecto. Allí, mire en el menú del lado izquierdo como última entrada hay un recuento de “problemas” (si es más de cero). haga clic en ellos y luego, para cada problema resaltado en rojo en intellij en módulos/bibliotecas, elimínelos (botón menos). Se les darán nombres de módulo como “test1..23” ya que intellij no puede distinguir la estructura. Después de eliminar todos los marcados en rojo, cierre + reinicie intellij. No ejecute la actualización de Maven en esta etapa, ya que volverá a presentar el mismo error. Al reiniciar intellij, se activará un nuevo escaneo del proyecto. ingrese la descripción de la imagen aquíestructura de nuevo.

  • Volvió a ocurrir; luego encuentro que estoy usando JUnit 4 en main conjunto de fuentes y JUnit 5 en test conjunto de fuentes Aunque su alcance de dependencia es todo correcto en build.gradlesolo puedo ejecutar las pruebas JUnit 5 y tuve que eliminar las pruebas JUnit 4.

    – WesternGun

    30 de agosto de 2020 a las 0:36

  • Buen punto para prestar atención. Probé todas las opciones mencionadas en otras soluciones, incluida la adición public para probar la clase propuesta por @João Matos (que en realidad marcó la clase como una Test clase ejecutable, pero las pruebas aún no se ejecutaron). Entonces, la mejor manera fue copiar una de las pruebas de trabajo de otra no public clase de prueba en esta clase. En el momento en que lo hice, el @Test la anotación se importó utilizando un nombre completamente calificado que es diferente de todos los demás @Test anotaciones

    – usuario1927829

    21 de febrero de 2021 a las 9:14


Avatar de usuario de Tom Rossen
tom rossen

Ninguna de las respuestas anteriores me funcionó en IDEA 2019.1.2 (o -.3) con Junit Jupiter 5.5.0. Había clonado con git un par de proyectos que había enviado a GitHub desde una computadora diferente, donde sus pruebas funcionaron bien. En mi nueva computadora portátil, obtuve “No se encontraron pruebas” sin importar cómo intenté ejecutarlas.

Lo que finalmente funcionó: eliminé el IDEA generado prueba.iml archivo, porque me di cuenta de que no había tal archivo en un proyecto virgen que había creado solo para ver si podía ejecutar pruebas (de hecho, podría). Después de que eliminé este archivo en los dos proyectos anteriores, las pruebas funcionaron perfectamente. Nada nuevo prueba.iml fue generado.

No sé cómo o cuándo se generaron esos archivos. Debido a que los repositorios de git son privados, no me molesté en ignorar los archivos *.*ml de IDEA; sin embargo, no estaban en los repositorios de GitHub. Además, estaban en la raíz de los proyectos, no en el directorio .idea.

¿Ha sido útil esta solución?