How to run unit tests in an e4 + e(fx)clipse project? [message #1412416] |
Tue, 26 August 2014 05:26  |
Eclipse User |
|
|
|
I want to run some JUnit tests in my e4 + e(fx)clipse application, but I'm struggling with Maven at this point.
I've read that the recommended approach[1] is to create an Eclipse fragment and write some tests on it. Accordingly to Tycho wiki[2], I would need to declare a dependency to the feature (because my tests require some plugins provided by e(fx)clipse), so I came up with the following pom for the test fragment:
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<artifactId>lab.poc.unittests.app.tests</artifactId>
<packaging>eclipse-test-plugin</packaging>
<name>Unit Tests POC</name>
<description>Unit Tests POC</description>
<parent>
<groupId>lab.poc.unittests</groupId>
<artifactId>lab.poc.unittests.app.releng</artifactId>
<relativePath>../lab.poc.unittests.app.releng/pom.xml</relativePath>
<version>1.0.0</version>
</parent>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<useUIHarness>true</useUIHarness>
<dependencies>
<dependency>
<type>eclipse-feature</type>
<artifactId>lab.poc.unittests.app.feature</artifactId>
<version>0.0.0</version>
</dependency>
</dependencies>
</configuration>
</plugin>
</plugins>
</build>
</project>
However, when I run mvn clean verify in my releng pom I get the following error:
[INFO] --- tycho-surefire-plugin:0.21.0:test (default-test) @ lab.poc.unittests.app.tests ---
[INFO] Cannot complete the request. Generating details.
[INFO] Cannot complete the request. Generating details.
[INFO] {osgi.os=noenv, osgi.ws=noenv, org.eclipse.update.install.features=true, osgi.arch=noenv}
[ERROR] Cannot resolve project dependencies:
[ERROR] You requested to install 'lab.poc.unittests.app.feature.feature.group 0.0.0' but it could not be found
[ERROR]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Unit Tests POC - releng ........................... SUCCESS [ 0.085 s]
[INFO] Unit Tests POC - application bundle ............... SUCCESS [ 1.710 s]
[INFO] Unit Tests POC - application feature .............. SUCCESS [ 0.292 s]
[INFO] Unit Tests POC - application product .............. SUCCESS [ 5.269 s]
[INFO] Unit Tests POC .................................... FAILURE [ 0.335 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.392 s
[INFO] Finished at: 2014-08-26T17:05:37+12:00
[INFO] Final Memory: 47M/114M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-surefire-plugin:0.21.0:test (default-test) on project lab.poc.unittests.app.tests: Execution default-test of goal org.eclipse.tycho:tycho-surefire-plugin:0.21.0:test failed: No solution found because the problem is unsatisfiable.: [Unable to satisfy dependency from tycho-extra-1409029537154 0.0.0.1409029537154 to lab.poc.unittests.app.feature.feature.group 0.0.0.; Unable to satisfy dependency from tycho-1409029537177 0.0.0.1409029537177 to lab.poc.unittests.app.feature.feature.group 0.0.0.; No solution found because the problem is unsatisfiable.] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :lab.poc.unittests.app.tests
In the end, as the e(fx)clipse uses a different target platform, I'm not even sure if this is right approach to test an e4 + e(fx)clipse project. How are you guys doing this?
[1]: http://www.vogella.com/tutorials/Eclipse4Testing/article.html
[2]: https://wiki.eclipse.org/Tycho/Packaging_Types#eclipse-test-plugin
|
|
|
Re: How to run unit tests in an e4 + e(fx)clipse project? [message #1412441 is a reply to message #1412416] |
Tue, 26 August 2014 07:06   |
Eclipse User |
|
|
|
Hi,
The first question is. Are you writing UI-Tests or NONE-UI-Tests?
Unfortunately the error message tycho provides is not very useful but it
looks like the feature is missing some dependency but I can't tell you
which ones are missing.
Are you able to run your JUnit-Tests inside the IDE?
Tom
On 26.08.14 07:26, Fernando Paz wrote:
> I want to run some JUnit tests in my e4 + e(fx)clipse application, but
> I'm struggling with Maven at this point.
>
> I've read that the recommended approach[1] is to create an Eclipse
> fragment and write some tests on it. Accordingly to Tycho wiki[2], I
> would need to declare a dependency to the feature (because my tests
> require some plugins provided by e(fx)clipse), so I came up with the
> following pom for the test fragment:
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/xsd/maven-4.0.0.xsd"
> xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <modelVersion>4.0.0</modelVersion>
> <artifactId>lab.poc.unittests.app.tests</artifactId>
> <packaging>eclipse-test-plugin</packaging>
>
> <name>Unit Tests POC</name>
> <description>Unit Tests POC</description>
>
>
> <parent>
> <groupId>lab.poc.unittests</groupId>
> <artifactId>lab.poc.unittests.app.releng</artifactId>
>
> <relativePath>../lab.poc.unittests.app.releng/pom.xml</relativePath>
> <version>1.0.0</version>
> </parent>
>
> <build>
> <sourceDirectory>src</sourceDirectory>
> <plugins>
> <plugin>
> <groupId>org.eclipse.tycho</groupId>
> <artifactId>tycho-surefire-plugin</artifactId>
> <version>${tycho-version}</version>
> <configuration>
> <useUIHarness>true</useUIHarness>
> <dependencies>
> <dependency>
> <type>eclipse-feature</type>
>
> <artifactId>lab.poc.unittests.app.feature</artifactId>
> <version>0.0.0</version>
> </dependency>
> </dependencies>
> </configuration>
> </plugin>
> </plugins>
> </build>
>
> </project>
>
>
> However, when I run mvn clean verify in my releng pom I get the
> following error:
>
>
> [INFO] --- tycho-surefire-plugin:0.21.0:test (default-test) @
> lab.poc.unittests.app.tests ---
> [INFO] Cannot complete the request. Generating details.
> [INFO] Cannot complete the request. Generating details.
> [INFO] {osgi.os=noenv, osgi.ws=noenv,
> org.eclipse.update.install.features=true, osgi.arch=noenv}
> [ERROR] Cannot resolve project dependencies:
> [ERROR] You requested to install
> 'lab.poc.unittests.app.feature.feature.group 0.0.0' but it could not be
> found
> [ERROR]
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Unit Tests POC - releng ........................... SUCCESS [
> 0.085 s]
> [INFO] Unit Tests POC - application bundle ............... SUCCESS [
> 1.710 s]
> [INFO] Unit Tests POC - application feature .............. SUCCESS [
> 0.292 s]
> [INFO] Unit Tests POC - application product .............. SUCCESS [
> 5.269 s]
> [INFO] Unit Tests POC .................................... FAILURE [
> 0.335 s]
> [INFO]
> ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Total time: 14.392 s
> [INFO] Finished at: 2014-08-26T17:05:37+12:00
> [INFO] Final Memory: 47M/114M
> [INFO]
> ------------------------------------------------------------------------
> [ERROR] Failed to execute goal
> org.eclipse.tycho:tycho-surefire-plugin:0.21.0:test (default-test) on
> project lab.poc.unittests.app.tests: Execution default-test of goal
> org.eclipse.tycho:tycho-surefire-plugin:0.21.0:test failed: No solution
> found because the problem is unsatisfiable.: [Unable to satisfy
> dependency from tycho-extra-1409029537154 0.0.0.1409029537154 to
> lab.poc.unittests.app.feature.feature.group 0.0.0.; Unable to satisfy
> dependency from tycho-1409029537177 0.0.0.1409029537177 to
> lab.poc.unittests.app.feature.feature.group 0.0.0.; No solution found
> because the problem is unsatisfiable.] -> [Help 1]
> [ERROR]
> [ERROR] To see the full stack trace of the errors, re-run Maven with the
> -e switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions,
> please read the following articles:
> [ERROR] [Help 1]
> http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
> [ERROR]
> [ERROR] After correcting the problems, you can resume the build with the
> command
> [ERROR] mvn <goals> -rf :lab.poc.unittests.app.tests
>
>
> In the end, as the e(fx)clipse uses a different target platform, I'm not
> even sure if this is right approach to test an e4 + e(fx)clipse project.
> How are you guys doing this?
>
>
> [1]: http://www.vogella.com/tutorials/Eclipse4Testing/article.html
> [2]: https://wiki.eclipse.org/Tycho/Packaging_Types#eclipse-test-plugin
|
|
|
|
Re: How to run unit tests in an e4 + e(fx)clipse project? [message #1412698 is a reply to message #1412692] |
Tue, 26 August 2014 21:26   |
Eclipse User |
|
|
|
My guess is that you miss a bundle in your test feature. What you can
try is to make the tooling generated a Jemmy-Unit-Test for you. For that
to work you need to add
http://downloads.efxclipse.bestsolution.at/p2-repos/addons/nightly/site/
to your target so that you have the Jemmy stuff.
If you then bootstrap an e4 application it will give you the option to
also generate a Jemmy JUnit-Test. Unfortunately there's a bug in there's
a bug in the code (see "Using Jemmy for e4 javafx application") so the
JUnit-Test will not launch but it should provide you guidance on how to
bootstrap JUnit on maven-tycho.
Tom
On 26.08.14 23:00, Fernando Paz wrote:
> Hi Tom.
>
> For this example I'm writing non-UI tests, but surely I will cover UI
> tests in the future.
> And yes, I'm able to run the JUnit tests inside Eclipse.
>
> Do you think this might be related to the target platform?
|
|
|
Re: How to run unit tests in an e4 + e(fx)clipse project? [message #1423788 is a reply to message #1412698] |
Mon, 15 September 2014 02:17   |
Eclipse User |
|
|
|
Hi Tom.
After some research, I found out that I had to use another Tycho plugin in my pom:
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<dependency-resolution>
<extraRequirements>
<requirement>
<type>eclipse-feature</type>
<id>lab.poc.unittests.app.feature</id>
<versionRange>0.0.0</versionRange>
</requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
</plugin>
</plugins>
</build>
However, it still complains about missing JavaFX packages. I'm pretty sure that I got the right plugins are included in my feature, otherwise the application wouldn't run, right?
!STACK 0
java.lang.NoClassDefFoundError: javafx/stage/Stage
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
at java.lang.Class.getDeclaredMethods(Class.java:1962)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.getMethod(ServiceComponent.java:126)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:213)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: javafx.stage.Stage cannot be found by lab.poc.unittests.app.mainview_1.0.0
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:336)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:328)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 15 more
|
|
|
Re: How to run unit tests in an e4 + e(fx)clipse project? [message #1423895 is a reply to message #1423788] |
Mon, 15 September 2014 06:21  |
Eclipse User |
|
|
|
Not finding javafx classes means that the osgi-hooks are not loaded
appropriately. Did you look at what the tooling generates if you want to
run Jemmy-Tests?
Tom
On 15.09.14 04:17, Fernando Paz wrote:
> Hi Tom.
>
> After some research, I found out that I had to use another Tycho plugin
> in my pom:
>
> <build>
> <sourceDirectory>src</sourceDirectory>
> <plugins>
> <plugin>
> <groupId>org.eclipse.tycho</groupId>
> <artifactId>target-platform-configuration</artifactId>
> <configuration>
> <dependency-resolution>
> <extraRequirements>
> <requirement>
> <type>eclipse-feature</type>
> <id>lab.poc.unittests.app.feature</id>
> <versionRange>0.0.0</versionRange>
> </requirement>
> </extraRequirements>
> </dependency-resolution>
> </configuration>
> </plugin>
> </plugins>
> </build>
>
>
> However, it still complains about missing JavaFX packages. I'm pretty
> sure that I got the right plugins are included in my feature, otherwise
> the application wouldn't run, right?
>
> !STACK 0
> java.lang.NoClassDefFoundError: javafx/stage/Stage
> at java.lang.Class.getDeclaredMethods0(Native Method)
> at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
> at java.lang.Class.getDeclaredMethods(Class.java:1962)
> at
> org.eclipse.equinox.internal.ds.model.ServiceComponent.getMethod(ServiceComponent.java:126)
>
> at
> org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:213)
>
> at
> org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
>
> at
> org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
>
> at
> org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
>
> at
> org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
>
> at
> org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
>
> at
> org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
>
> at
> org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
> at
> org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
>
> at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.ClassNotFoundException: javafx.stage.Stage cannot
> be found by lab.poc.unittests.app.mainview_1.0.0
> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
>
> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:336)
>
> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:328)
>
> at
> org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
>
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> ... 15 more
>
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.03155 seconds