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)
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
-
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
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
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 entest
conjunto de fuentes Aunque su alcance de dependencia es todo correcto enbuild.gradle
solo 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 unaTest
clase ejecutable, pero las pruebas aún no se ejecutaron). Entonces, la mejor manera fue copiar una de las pruebas de trabajo de otra nopublic
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. estructura de nuevo.
-
Volvió a ocurrir; luego encuentro que estoy usando JUnit 4 en
main
conjunto de fuentes y JUnit 5 entest
conjunto de fuentes Aunque su alcance de dependencia es todo correcto enbuild.gradle
solo 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 unaTest
clase ejecutable, pero las pruebas aún no se ejecutaron). Entonces, la mejor manera fue copiar una de las pruebas de trabajo de otra nopublic
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
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.
¿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