I'm trying to set up a UI testing system with windowtester pro. I want to link those tests into the maven build process by using the Tycho plugin. For practising purpose I'm currently using an example project.
Now, when I build my project everything seems to compile fine, but when the test starts I get the following message and a default eclipse window pops up. The test is then executed on that window and -suprise- fails.
Framework arguments:
-application org.eclipse.tycho.surefire.osgibooter.uitest -testproperties C:\Users\jla\workspace\com.example.addressbook.test\target \surefire.properties
-product com.example.addressbook.bundle.product
Command-line arguments:
-debug -consolelog -data C:\Users\jla\workspace\com.example.addressbook.test\target\work\data -dev file:/C:/Users/jla/workspace/com.example.addressbook.test/target/dev.properties -application org.eclipse.tycho.surefire.osgibooter.uitest -testproperties C:\Users\jla\workspace\com.example.addressbook.test\target \surefire.properties -product com.example.addressbook.bundle.product!ENTRY org.eclipse.ui 4 4 2012-10-12 16:00:36.984 !MESSAGE Exception in org.eclipse.ui.internal.FolderLayout.addView(String):
org.eclipse.ui.PartInitException: View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer
!ENTRY org.eclipse.ui 4 4 2012-10-12 16:00:36.990 !MESSAGE Exception in org.eclipse.ui.internal.FolderLayout.addView(String):
org.eclipse.ui.PartInitException: View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer !STACK 1 org.eclipse.ui.PartInitException: View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer
This is the Pom.xml I have for my test project:
<?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>
<parent>
<groupId>com.example.addressbook</groupId>
<artifactId>com.example.addressbook.build</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../com.example.addressbook.build</relativePath>
</parent>
<artifactId>com.example.addressbook.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<testSuite>com.example.addressbook.test</testSuite>
<testClass>com.example.addressbook.test.AppTest001</testClass>
<useUIHarness>true</useUIHarness>
<useUIThread>true</useUIThread>
<!-- use our product and application to launch the tests -->
<product>com.example.addressbook.bundle.product</product>
<!-- <application>org.eclipse.ui.ide.workbench</application>-->
<dependencies>
<dependency>
<type>p2-installable-unit</type>
<artifactId>com.windowtester.runtime.feature.group</artifactId>
<version>0.0.0</version>
</dependency>
</dependencies>
</configuration>
</plugin>
</plugins>
</build>
</project>
I finally found a way to make it work. Since tycho is using the project informations created by eclipse it is necessary to reference the project that is supposed to be tested in the MANIFEST.MF file.
This is my MANIFEST.MF file:
Bundle-Name: Test Bundle
Bundle-Version: 1.0.0.qualifier
Bundle-SymbolicName: com.example.addressbook.test
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.junit,
com.windowtester.runtime,
com.windowtester.swt.runtime,
com.windowtester.swing.runtime,
org.eclipse.jface,
org.eclipse.core.runtime,
org.eclipse.swt,
com.example.addressbook.bundle,
com.example.addressbook.services
And this is what my pom.xml looks like. Note: I just added an application tag right under the product tag.
<?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>
<parent>
<groupId>com.example.addressbook</groupId>
<artifactId>com.example.addressbook.build</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../com.example.addressbook.build</relativePath>
</parent>
<artifactId>com.example.addressbook.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<testSuite>com.example.addressbook.test</testSuite>
<testClass>com.example.addressbook.test.AppTest01</testClass>
<useUIHarness>true</useUIHarness>
<useUIThread>true</useUIThread>
<!-- use our product and application to launch the tests -->
<product>com.example.addressbook.bundle.product</product>
<application>com.example.addressbook.bundle.application</application>
<dependencies>
<dependency>
<type>p2-installable-unit</type>
<artifactId>com.windowtester.runtime.feature.group</artifactId>
<version>0.0.0</version>
</dependency>
</dependencies>
</configuration>
</plugin>
</plugins>
</build>
</project>