Hallo zusammen,
ich habe das Thema lange geschoben, wollte es jetzt aber doch mal anpacken und habe mir dazu mal eine Lib von mir vorgenommen. In dieser Lib habe ich Unit Test und Integration Tests mit TestFx.
Die Struktur ist wie in einem normalen Maven Projekt.
Alle Tests liegen unter test. Wenn ich jetzt die module-info.java anlege, failen sofort alle Integration Tests.
Die module-info.java sieht wie folgt aus.
Die Fehlermeldungen sind wie folgt:
Die Methode testDialogPosition ist eine private Methode, da diese nur von den Test Methoden aufgerufen werden muss, selbst wenn ich diese public mache, geht das gleiche weiter mit Lamda ausdrücken.
Ich habe zum testen mal opens de.sphw.commons.jfx.dialogs; in die module-info.java mit aufgenommen, aber das ist ein Rattenschwanz, danach geht es einfach weiter mit java modulen. Zumal ich das eigentlich auch nur für die Tests brauchen würde und das kommt mir nicht richtig vor.
Dann habe ich was gefunden, bei dem es heißt, einfach eine module-info.[java|test] in das test package zu legen. Wenn ich das mache, bekomme ich einen Fehler in meiner IDE. module-info.java' already exists in the module. Maven tut dennoch, bekomme dann aber einen testCompile error, den ich bei compile nicht bekomme.
Dabei handelt es sich um den Lombok builder, der bei mvn compile ganz normal erstellt wird. Vielleicht stelle ich mich auch gerade an wie der erste Mensch, aber bisher werde ich mit den Modulen noch nicht warm.
Was ich noch nicht versucht habe, die integrations tests wo anders hin zu schieben, aber wohin? Ich hatte die bisher immer im test Ordner. Kennt Maven den Ordner integration-test?
Wie macht ihr das denn?
ich habe das Thema lange geschoben, wollte es jetzt aber doch mal anpacken und habe mir dazu mal eine Lib von mir vorgenommen. In dieser Lib habe ich Unit Test und Integration Tests mit TestFx.
Die Struktur ist wie in einem normalen Maven Projekt.
Rich (BB-Code):
src
- main
- java
- resources
- test
- java
- resources
Alle Tests liegen unter test. Wenn ich jetzt die module-info.java anlege, failen sofort alle Integration Tests.
Die module-info.java sieht wie folgt aus.
Java:
module sphw.jfx {
requires javafx.graphics;
requires static lombok;
requires com.fasterxml.jackson.databind;
requires com.fasterxml.jackson.dataformat.yaml;
requires org.apache.logging.log4j;
requires javax.inject;
requires javafx.controls;
requires java.desktop;
requires com.google.guice;
requires javafx.fxml;
requires com.google.guice.extensions.assistedinject;
exports de.sphw.commons.jfx.config;
exports de.sphw.commons.jfx.controls;
exports de.sphw.commons.jfx.dialogs;
exports de.sphw.commons.jfx.exceptions;
exports de.sphw.commons.jfx.fxml;
exports de.sphw.commons.jfx.icons;
exports de.sphw.commons.jfx.styles;
exports de.sphw.commons.jfx.utils;
}
Code:
[ERROR] de.sphw.commons.jfx.dialogs.DialogsFxTest.centerToStageWithFixedSizeBiggerThanDialog(FxRobot) Time elapsed: 0.008 s <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make private void de.sphw.commons.jfx.dialogs.DialogsFxTest.testDialogPosition(org.testfx.api.FxRobot) accessible: module sphw.jfx does not "opens de.sphw.commons.jfx.dialogs" to unnamed module @339bf286
Ich habe zum testen mal opens de.sphw.commons.jfx.dialogs; in die module-info.java mit aufgenommen, aber das ist ein Rattenschwanz, danach geht es einfach weiter mit java modulen. Zumal ich das eigentlich auch nur für die Tests brauchen würde und das kommt mir nicht richtig vor.
Dann habe ich was gefunden, bei dem es heißt, einfach eine module-info.[java|test] in das test package zu legen. Wenn ich das mache, bekomme ich einen Fehler in meiner IDE. module-info.java' already exists in the module. Maven tut dennoch, bekomme dann aber einen testCompile error, den ich bei compile nicht bekomme.
Java:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /F:/repos/sphw-jfx/src/main/java/de/sphw/commons/jfx/dialogs/Dialogs.java:[98,27] cannot find symbol
symbol: method builder()
location: class de.sphw.commons.jfx.dialogs.AboutDialog
[INFO] 1 error
[INFO] -------------------------------------------------------------
Dabei handelt es sich um den Lombok builder, der bei mvn compile ganz normal erstellt wird. Vielleicht stelle ich mich auch gerade an wie der erste Mensch, aber bisher werde ich mit den Modulen noch nicht warm.
Was ich noch nicht versucht habe, die integrations tests wo anders hin zu schieben, aber wohin? Ich hatte die bisher immer im test Ordner. Kennt Maven den Ordner integration-test?
Wie macht ihr das denn?