Adichatz provides an original and easy to use solution for testing UI components.

  • Based on TestNG testing framework.
  • Launched automatically or on-demand from application (Test classes can be updated and relaunched).
  • Can easily simulate users actions.
  • Results are displayed and interpretable in specific editor.


How to test

Step 1: Add 'org.adichatz.testing' plugin

org.adichatz.testing plugin must be added to application environment.

  • Open file $projectDirectory/META-INF/MANIFEST.MF.
  • add line org.adichatz.testing, in Require-Bundle item.



If you try to relaunch the application, an error must occur.
java.lang.RuntimeException: No application id has been found.

Add 'org.adichatz.testing' plugin

To overcome this problem, follow instructions below:

  • Select Run > Run configurations….

A new window is open, then:

  • Select Plug-ins tab.
  • Select Add Required Plug-ins button.
  • In the same window, select Run button.

Add required plugins

Remark:
An other way is to add missing plugins inside {plugin}/{projectName}.product file:

  • com.google.inject,
  • org.apache.ant.

If you decide to add missing plugins inside {plugin}/{projectName}.product file, thing to delete these lines before exporting project.



Step 2: Create a Test class

A test case is composed of one or several Java classes with one ore several annoted methods.
Below, a simple Test class is described.

Create java class MyFirstTest.java in package org.mycompany.myproject.testing.

package org.mycompany.myproject.testing;

import org.adichatz.engine.e4.core.PartCore;
import org.adichatz.engine.e4.part.BoundedPart;
import org.adichatz.engine.e4.resource.E4SimulationTools;
import org.adichatz.engine.simulation.SimulationTools;
import org.adichatz.testing.AdiAssert;
import org.adichatz.testing.TestingTools;
import org.testng.annotations.Test;

public class MyFirstTest {
	@Test
	public void test() {
		// Select Option queriesMenus/filmQuery in navigator "groupNavigator" and return a part.
		BoundedPart filmQueryPart = E4SimulationTools.handleNavigatorOpenPartItem("groupNavigator", "queriesMenu", "filmQUERY");
		// check that part is active.
		AdiAssert.isPartActive(filmQueryPart);
		TestingTools.testInfo("QueryForm with query 'filmQUERY' is active.");

		PartCore filmQueryCore = filmQueryPart.getGenCode();
		// Launch query in filmQuery part.
		SimulationTools.handleContextMenuAction(filmQueryCore, "tableCM:contextMenu", "launchQueryAction");
	}
}

Remarks:
This test opens a QueryForm editor and launch a query to supply rows to the Table Controller contained in the editor.

  • Line 12: @Test annotation points out a method to be launched by TestNG.
  • Line 15: Simulates selection of Query Film in navigator.
  • Line 22: Executes launchQueryAction item in context menu.


A more complex Test class which checks databinding between Entity editors could be seen here.



Step 3: Create a file $projectDirectory/resources/xml/AdichatzTesting.xml as follow

You need to add an simple entry in file $projectDirectory/resources/xml/AdichatzTesting.xml as shown below:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<adichatzTestingTree expanded="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adichatz.org/xsd/v0.9.1/testing/adichatzTestingTree.xsd">
    <suite id="myFirstSuite" label="Suite example" launchOnStartup="false" expanded="true">
        <test id="myFirstTest" label="my first test" testURI="bundleclass://myproject/org.mycompany.myproject.testing.MyFirstTest"/>
    </suite>
</adichatzTestingTree>

Remarks:
A testing

  • Line 1: <adichatzTestingTree expanded=“true”… means: A testing menu is added to existing navigators at runtime. The menu is expanded.
  • Line 2: A suite test case is created. The suite is expanded and is not launched automatically during the application startup process.



Step 4: Execute and reexecute tests

Execute a test

To execute or reexecute a test case, click on the corresponding item (my first test).

  • when a test fails, a specific editor was created for reporting test results and is automatically open.
  • Changes done on Test classes in Eclipse IDE are directly considered without relaunching the application.



Step 5: Show results

Display Testing results

A specific editor was created for reporting test results. By default, it is automatically open when a test fails.

  • A tree is used to report results.
    • Level Run: Displays the label of the suite or of the used testNG xml file.
    • Level Suite: Displays onStart event with main features: duration, sucesses, failures….
    • Level Class: Display label for class or onFinish event.
    • Level Test: Reports main features or the Test (a method with annotation @Test): duration, sucesses, failures…



Tools

Testing menu provides Testing tools options</wrap> as shown below:

Testing tools

  • Testing result manager: Opens and editor for reporting test results.
  • Display register for active editor: Display in the consol part all the entries of register for the active editor. These entries are used in Test class for naming controllers.
  • Refresh testing menu: Refresh current Testing menu. Changes made on IDE can be seen without having to quit the application.

.

2020/04/16 10:56