本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
![](http://chinajavawolf.iteye.com/javascripts/fckeditor/editor/images/smiley/msn/lightbulb.gif)
Tapestry 测试效用
这个库现在基于
Selenium0.8.1
。
策略启动,在过程中,一个
Selenimum
服务器(轮流,开始和管理一个
web
浏览器),一个
Jetty
实例(为与
web
浏览器对话),和一个
Selenium
客户端(与服务器对话)。
客户端能够请求
URLs,
填充表单数据,点击链接,然后制造断言在输出和行为周围。
用法和配置
这个库的核心部分是一个基类让你可以扩充你的测试用例从:
AbstractIntegrationTestSuite.
你必须告知套件关于定位你的
web
应用。这要在你的
TestNG
配置文件内做:
- <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
- <suite name="My Tapestry Application" parallel="false" thread-count="10" annotations="1.5" verbose="2">
- <test name="Integration Tests">
- <parameter name="tapestry.integration-webapp" value="src/main/webapp"/>
- <packages>
- <package name="org.example.myapp"/>
- </packages>
- </test>
- </suite>
The other part is to create a unit test suite. Here's an example from one of the Tapestry modules:
其他部分是创建一个单元测试套件。这里一个例子来自
Tapestry
的一个模块:
- package org.apache.tapestry.spring;
- import org.apache.tapestry.test.AbstractIntegrationTestSuite;
- import org.testng.annotations.Test;
- public class TapestrySpringIntegrationTest extends AbstractIntegrationTestSuite
- {
- @Test
- public void integration_test() throws Exception
- {
- open(BASE_URL);
- type("input", "paris in the springtime");
- clickAndWait("//input[@value='Convert']");
- assertFieldValue("input", "PARIS IN THE SPRINGTIME");
- }
- }
当然了一个真实的集成测试应该包括很多方法,并且应该需要一个单独的进程执行他们,或者甚至是一个特定的执行顺序。
另外,基类继承了一个普通的异常报告;当一个失败发生在
Selenium
服务器内时,一个更详细的信息,包括当前页面的
HTML
源,被报告给
System.err
。