Shining ZATS Mimic"
Line 38: | Line 38: | ||
* '''Cannot test visual effects.''' | * '''Cannot test visual effects.''' | ||
*: It cannot verify any behaviors that doesn't reflect upon component's properties such as animations, or a component's visual effect. | *: It cannot verify any behaviors that doesn't reflect upon component's properties such as animations, or a component's visual effect. | ||
+ | |||
+ | |||
+ | == Setup == | ||
+ | |||
+ | === Maven Project === | ||
+ | If your project depends on ZK '''5.0.x''', add the following dependency: | ||
+ | |||
+ | <source lang="xml"> | ||
+ | |||
+ | <dependency> | ||
+ | <groupId>org.zkoss.zats</groupId> | ||
+ | <artifactId>zats-mimic</artifactId> | ||
+ | <version>1.0.0-RC</version> | ||
+ | <scope>test</scope> | ||
+ | </dependency> | ||
+ | |||
+ | </source> | ||
+ | |||
+ | If your project depends on ZK '''6.0.0''', add the following dependency: | ||
+ | |||
+ | <source lang="xml"> | ||
+ | |||
+ | <dependency> | ||
+ | <groupId>org.zkoss.zats</groupId> | ||
+ | <artifactId>zats-mimic-ext6</artifactId> | ||
+ | <version>1.0.0-RC</version> | ||
+ | <scope>test</scope> | ||
+ | </dependency> | ||
+ | |||
+ | </source> | ||
+ | |||
+ | Remember also add dependencies of your preferred unit test framework, e.g. JUnit. | ||
+ | |||
+ | === Manually === | ||
+ | |||
+ | Download the release zip file, add all jar under '''dist/lib''' and '''dist/lib/ext''' into your project's classpath. | ||
+ | |||
+ | Remember also add jar of your preferred unit test framework, e.g. JUnit. | ||
= Operation Agent Usage = | = Operation Agent Usage = |
Revision as of 08:25, 17 April 2012
Hawk Chen, Engineer, Potix Corporation
April, 2012
1.0.0-RC
Opening
In agile software development, developers modify their codes frequently for requirement change or refactoring, they therefore also perform unit tests frequently to ensure the software quality. In ZK-based applications, it is hard to execute an unit test on the composer which is tightly-coupled to ZUL because it is instantiated when a ZUL is requested by a browser. The same problem arises if you want to verify a ZUL's zkbind expression with ViewModel. Hence TDD (Test-Driven Development) cannot proceed under this situation.
In some cases, agile developers may deploy their web applications to a server and test it within a browser. However, writing an automation test to control a browser is an issue, and testing for different browsers is also a trouble. Not to mention that running an unit test in an application server is time-consuming and can be an agile developer's darkest moment. But, don't be depressed, let me enlighten your path with the first light of ZK Application Test Suite (ZATS) - Mimic Library.
Comparing to previous freshly release (please refer Small Talks/2012/April/The Dawn of ZK Application Test Suite:Mimic Library), we change initialized API and support more user operations. These makes this library apply to wider testing scenario.
Mimic Library : No Server Test
Mimic library enable testers to test their composer without an application server, and of course without a browser, either. Through this library, testers can mimic user interactions to applications such as clicking or typing to verify composer's (controller layer) data and logic. All they have to do is to write a regular unit test case and use mimic library's utility class to interact components on ZUL. Then, run the test case.
No deploying to server, no rendering on browser, the unit test case can be executed in a very short period of time - this is very helpful for frequent unit testing during agile development processes.
The concept is as follows:
Testers write test cases to simulate user action such as clicking or typing with operation agents. The operation agent communicates with server emulator and triggers the composer's event handlers to change the component's status. Testers can check component's properties from component agent to verify the result of user action. It might be a label changing its value or a Listbox increases by one item. These behaviors that reflect on the component's properties can be verified.
Limitation
As this library focuses on testing the composer's logic on the server side, there are some limitations you should know:
- Functions that depend on the application server cannot work.
- Test cases run in simulated environment; all functions that requires an application server does not work (e.g. JNDI, or JTA). If user's AUT (Application Under Test) project adopts such container-provided services, they need extra work to make it work normally out of a container, e.g. use Test Double like a fake object.
- Cannot test browser’s behavior.
- In ZK-based applications, some behaviors are handled by browser (JavaScript), e.g. popup menu or message dialog created at client side. As server side is not aware of these behaviors, we cannot verify it.
- Cannot test visual effects.
- It cannot verify any behaviors that doesn't reflect upon component's properties such as animations, or a component's visual effect.
Setup
Maven Project
If your project depends on ZK 5.0.x, add the following dependency:
<dependency>
<groupId>org.zkoss.zats</groupId>
<artifactId>zats-mimic</artifactId>
<version>1.0.0-RC</version>
<scope>test</scope>
</dependency>
If your project depends on ZK 6.0.0, add the following dependency:
<dependency>
<groupId>org.zkoss.zats</groupId>
<artifactId>zats-mimic-ext6</artifactId>
<version>1.0.0-RC</version>
<scope>test</scope>
</dependency>
Remember also add dependencies of your preferred unit test framework, e.g. JUnit.
Manually
Download the release zip file, add all jar under dist/lib and dist/lib/ext into your project's classpath.
Remember also add jar of your preferred unit test framework, e.g. JUnit.
Operation Agent Usage
In order to mimic user operation to ZK components, our library provide various operation agents. You can find all supported under package org.zkoss.zats.mimic.operation including check, click, close, focus, key stroke, select, multiple select, type, select by index, and render . We support those commonly-used operation first and will keep adding more operations.
Select
Multiple Select
Summary
Download
[? Example Project].
Comments
Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License. |