eclipse-rcptychowindow-testertycho-surefire-plugin

tycho surefire with windowtester pro does not open correct window


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>

Solution

  • 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>