blob: efe24e2cf1a7359d45ccde19f0ab2169cc26f489 [file] [log] [blame]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2.1. The general idea</title>
<link rel="stylesheet" type="text/css" href="../../css/style.css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Jubula Developer Manual">
<link rel="up" href="clientAPI.html" title="Chapter 2. Writing UI tests via API">
<link rel="prev" href="clientAPI.html" title="Chapter 2. Writing UI tests via API">
<link rel="next" href="ch02s02.html" title="2.2. General steps to take and class overview">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">2.1. The general idea</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="clientAPI.html">Prev</a> </td>
<th width="60%" align="center">Chapter 2. Writing UI tests via API</th>
<td width="20%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div xmlns:d="http://docbook.org/ns/docbook" class="breadcrumbs">
<span class="breadcrumb-link"><a href="../index.html">Jubula Developer Manual</a></span> &gt; <span class="breadcrumb-link"><a href="clientAPI.html">Writing UI tests via API</a></span> &gt; <span class="breadcrumb-node">The general idea</span>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id294369"></a>2.1. The general idea</h2></div></div></div>
<div class="figure">
<a name="api-idea"></a><div class="figure-contents"><div class="mediaobject"><img xmlns:d="http://docbook.org/ns/docbook" src="../images/api-idea.png"></div></div>
<div class="figure-title">Figure 2.1. Idea behind the API</div>
</div>
<br class="figure-break"><p>
The main idea behind Jubula's client API is to allow the execution of
Test Steps (CAPs) from within arbitrary Java code e.g. JUnit test cases
(see <a class="xref" href="ch02s01.html#api-idea" title="Figure 2.1. Idea behind the API">Figure 2.1, &#8220;Idea behind the API&#8221;</a>). At the same time of shifting the paradigm to target a developer
audience we've tried to stick to our principles:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>offer high-level test steps that are equivalent to the ones
available in the ITE: all test steps that are being executed via
the API behave 1:1 the same as the ones executed by the ITE.
</p></li>
<li class="listitem"><p>an API for all toolkits: the client API is available for all
toolkits supported by the ITE like JavaFX, AWT/Swing,
SWT/RCP/GEF, iOS, HTML, Win and WinApps.
</p></li>
<li class="listitem"><p>
offer toolkit abstraction layer to keep your tests UI toolkit
independent: the usage of the API will also allow you to specify
your tests in a toolkit neutral way. Please note that for all of
the concrete toolkit wrapper types abstracted super types are
provided e.g. to address a
<span class="emphasis"><em>javafx.scene.control.CheckBox</em></span>
we provide the wrapper type containing its test steps
<span class="emphasis"><em>org.eclipse.jubula.toolkit.javafx.components.CheckBox
</em></span>
but the underlying abstracted toolkit conceptual component is
<span class="emphasis"><em>org.eclipse.jubula.toolkit.concrete.components.ButtonComponent
</em></span>
.
</p></li>
<li class="listitem"><p>de-couple tests and real UI widgets: you still have to create
an object mapping (via the ITE and export it) to keep the
information that are required to determine which widget to address
during runtime independent from your test specification.
</p></li>
<li class="listitem"><p>separation of test and AUT runtime environments: the JVM
executing the tests is a separate one (and may also e.g. run on
a different machine) from the one the AUT gets executed in. It's
communicating with the AUT VM via a TCP/IP connection.
</p></li>
<li class="listitem"><p>the AUT-Agent manages the lifecycle of AUTs: starting /
stopping / restarting of AUTs is still done by instructing the
AUT-Agent to do so and may also be extended by the usage of
autrun to launch applications externally.
</p></li>
</ul></div>
</div>
<br xmlns:d="http://docbook.org/ns/docbook"><hr xmlns:d="http://docbook.org/ns/docbook">
<address xmlns:d="http://docbook.org/ns/docbook">Copyright BREDEX GmbH 2015. Made available under the Eclipse Public License v1.0.</address>
<br xmlns:d="http://docbook.org/ns/docbook">
</body>
</html>