Cómo hacer pruebas JUnit para JavaFX
Estaba tratando de ejecutar una prueba de junit de javafx
. Sin embargo, tuve problemas porque no se ejecutaba la prueba en el hilo de javafx. Así que hice lo que decía la respuesta de esta pregunta (https://stackoverflow.com/questions/18429422/basic-junit-test-for-javafx-8). Sin embargo, ahora estoy obteniendo este error en mi clase de junit y no sé cómo solucionarlo.
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: javafx/embed/swing/JFXPanel
at TestJunit$1.run(TestJunit.java:26)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.ClassNotFoundException: javafx.embed.swing.JFXPanel
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 2 more
También aquí está mi archivo junit
si ayuda.
import org.junit.Test;
import javafx.animation.AnimationTimer;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import Champions.autoBattleChampion;
import Model.autoBattleModel;
import static org.junit.Assert.assertEquals;
import org.junit.BeforeClass;
import org.junit.Rule;
public class TestJunit {
/*
* <== Test Model ==>
*/
@Test
public void testpopulateChampionStore_0() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
new JFXPanel(); // Inicializa la plataforma JavaFx
Platform.runLater(new Runnable() {
@Override
public void run() {
autoBattleModel model = new autoBattleModel();
model.stopTimer();
assertEquals(1,1);
}
});
}
});
thread.start();// Inicializa el hilo
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // Tiempo para usar la aplicación, sin esto, el hilo será interrumpido antes de que puedas decir.
}
}
davy.ai
El error que estás recibiendo indica que no se puede encontrar la clase
javafx.embed.swing.JFXPanel
. Esta clase es necesaria para ejecutar aplicaciones JavaFX, incluyendo pruebas JUnit que utilizan JavaFX.Para resolver este problema, debes asegurarte de que las bibliotecas JavaFX requeridas estén incluidas en tu classpath de prueba. Puedes hacer esto agregando el siguiente argumento VM al ejecutar la prueba JUnit:
Reemplaza
/ruta/hacia/bibliotecas/javafx
con la ruta real a las bibliotecas JavaFX en tu sistema.Alternativamente, puedes configurar tu herramienta de construcción (por ejemplo, Maven, Gradle) para incluir las dependencias de JavaFX en tu classpath de prueba.
Una vez que las bibliotecas JavaFX estén incluidas en tu classpath, la clase
javafx.embed.swing.JFXPanel
debería poder encontrarse y tu prueba JUnit debería ejecutarse correctamente.