Tapestry5单元测试
我们另一个方面可以测试模板文件,模板文件就是HTML文件,在HTML文件中可能涉及到测试:
*页面字段显示测试
*测试link动作
*测试表单提交form
1. 页面字段显示测试
在我们第1章的Start模板主要是断言显示“Hello World!”字符串。测试程序如清单2.5所示。
- package com.kingbegin.web.pages;
- import org.apache.tapestry.dom.Document;
- import org.apache.tapestry.test.PageTester;
- import org.junit.Assert;
- import org.junit.Before;
- import org.junit.Test;
- public class StartTemplateTest {
- PageTester tester;
- Document doc;
- @Before
- public void setUp() throws Exception {
- String appPackage = "com.kingbegin.web";
- String appName = "App"; // IoC中Modeule名字,默认AppModule.java。
- tester = new PageTester(appPackage, appName, "WebRoot");
- doc = tester.renderPage("Start");
- }
- @Test
- public void testGetMessage() {
- String message = doc.getElementById("label1").getChildMarkup().trim();
- Assert.assertEquals(message, "Hello World!");
- }
- }
PageTester对象是一个测试辅助类,实例化PageTester对象需要三个参数:appPackage是应用程序的基本包、appName是IoC容器的Modeule名字默认AppModule.java,我们的案例中没有Modeule,所以它的默认App、"WebRoot"是模板文件所在的位置。renderPage方法是模拟呈现页面得到一个Document对象,XHTML文件可以看成是一个XML文档,Document对象就是整个的页面,Document的getElementById("label1")方法可以帮助我们获得id为"label1"的Element对象,再调用getChildMarkup()可以获得元素中的内容,因为返回的内容可能还有回车和空格,所以还要调用trim()方法。最后断言label1中的内容为"HelloWorld!"。
- tapestry-test-5.0.11.jar
- If the page requires a context, you can pass it this way:
- public class MyTest extends Assert
- {
- @Test
- public void test1()
- {
- String appPackage = "org.example.app";
- String appName = "LocaleApp";
- PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
- Object[] context = new Object[]{ "abc", 123 };
- Document doc = tester.invoke(new ComponentInvocation(new PageLinkTarget("MyPage"), context));
- assertEquals(doc.getElementById("id1").getChildText(), "hello");
- }
- }
http://tapestry.apache.org/tapestry5/tapestry-core/guide/unit-testing-pages.html
Testing an action link
After rendering a page, you may want to "click" on an action link and then assert against the resulting page. You can do it this way:
- public class MyTest extends Assert
- {
- @Test
- public void test1()
- {
- String appPackage = "org.example.app";
- String appName = "LocaleApp";
- PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
- Document doc = tester.renderPage("MyPage");
- Element link = doc.getElementById("link1");
- doc = tester.clickLink(link);
- assertTrue(doc.toString().contains("abc"));
- }
- }
Testing a form submission
After rendering a page, you may want to fill out a form, submit it and then inspect the resulting page. You can do it this way:
- public class MyTest extends Assert
- {
- @Test
- public void test1()
- {
- String appPackage = "org.example.app";
- String appName = "LocaleApp";
- PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
- Document doc = tester.renderPage("MyPage");
- Element form = doc.getElementById("form1");
- Map<String, String> fieldValues = new HashMap<String, String>();
- fieldValues.put("field1", "hello");
- fieldValues.put("field2", "100");
- doc = tester.submitForm(form, fieldValues);
- assertTrue(doc.toString().contains("abc"));
- }
- }
To submit a form by clicking a submit button, call the clickSubmit() method instead.
Unit testing a component
To unit test a component, just create a test page containing that component. Then unit test that page.
Tapestry5单元测试相关推荐
- springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...
- 写算子单元测试Writing Unit Tests
写算子单元测试Writing Unit Tests! 一些单元测试示例,可在tests/python/relay/test_op_level3.py中找到,用于累积总和与乘积算子. 梯度算子 梯度算子 ...
- 写单元测试应该注意什么
写单元测试应该注意什么 转载于:https://www.cnblogs.com/yishenweilv/p/10899695.html
- Atitti mybatis的单元测试attilax总结
Atitti mybatis的单元测试attilax总结 版本mybatis 3.2.4 /palmWin/src/main/java/com/attilax/dao/mybatisTest.java ...
- java 中的单元测试_浅谈Java 中的单元测试
单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...
- android 找不到类文件,Android Studio单元测试找不到类文件!
就是一个方法里面逻辑比较多,查数据库,循环等等.比较复杂,我想测试一下他.是没有返回值的,我想看运行完成之后看看最后里面的变量是不是对的 如果跑整个程序的话就太慢了, 编译,运行, 登陆 等等.太长了 ...
- java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法
最近一段时间都是在补之前的技术债,一直忙着写业务代码没有注重代码的质量,leader也在强求,所有要把单元测试搞起来了 我把单元测试分为两种 一个是service的单元测试,一个是controller ...
- JUnit单元测试依赖包构建路径错误解决办法
JUnit单元测试依赖包构建路径错误解决办法: 选中报错的项目文件夹→右击选择属性(ALT+Enter)→java构建路径→库→添加库→JUnit→选择合适的Junit库版本.
- kotlin + springboot 整合redis,Redis工具类编写及单元测试
参考自: https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 1.maven依赖 <?xml ve ...
- Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解
在Junit4中还有的测试注解有: @BeforeClass ,@Before,@Test,@After,@AfterClass 1.其中:@BeforeClass,@AfterClass是Juni ...
最新文章
- 【hibernate框架】核心开发接口-saveOrUpdate方法与delete方法
- 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...
- 上帝造题的七分钟(ybtoj-树状数组)
- PyQt5 打包问题解决 Unable to find “D:\anaconda3\lib\site-packages\PyQt5\Qt\translations\qtwebengine_locale
- Ubuntu下解决文件名mp3标签和文本文件内容的乱码问题
- 吉他扒谱该怎么做?分享一款超好用的扒谱工具!
- 软件测试——决策表法
- python掷骰子小游戏编程入门_MicroPython实战:开发一款掷骰子小游戏
- java nio 断开连接_JAVA NIO写服务端判断客户端断开连接的方法
- 图神经网络在知识图谱中的应用
- 【分析】Ceph数据一致性检查 - Scrub的执行
- 银河麒麟高级服务器操作系统V10下载安装及安装docker
- 2015年计算机二级office,2015年计算机二级MSoffice考试资料汇总.doc
- 为什么编c语言总有一个错误,为什么程序最后总会显示有1个错误
- 微信签到积分换卷小程序(完整前后台)
- Python爬虫入门一(爬虫基础)
- 神经网络学习笔记3——LSTM长短期记忆网络
- Zookeeper 简介
- 【从0到1搭建LoRa物联网】19、LoRa串口透传例程(补充)
- python中形参只在函数内部有效_【Python】函数