我们另一个方面可以测试模板文件,模板文件就是HTML文件,在HTML文件中可能涉及到测试:
*页面字段显示测试
*测试link动作
*测试表单提交form

1. 页面字段显示测试
在我们第1章的Start模板主要是断言显示“Hello World!”字符串。测试程序如清单2.5所示。

  1. package com.kingbegin.web.pages;
  2. import org.apache.tapestry.dom.Document;
  3. import org.apache.tapestry.test.PageTester;
  4. import org.junit.Assert;
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. public class StartTemplateTest {
  8. PageTester tester;
  9. Document doc;
  10. @Before
  11. public void setUp() throws Exception {
  12. String appPackage = "com.kingbegin.web";
  13. String appName = "App"; // IoC中Modeule名字,默认AppModule.java。
  14. tester = new PageTester(appPackage, appName, "WebRoot");
  15. doc = tester.renderPage("Start");
  16. }
  17. @Test
  18. public void testGetMessage() {
  19. String message = doc.getElementById("label1").getChildMarkup().trim();
  20. Assert.assertEquals(message, "Hello World!");
  21. }
  22. }

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!"。

  1. tapestry-test-5.0.11.jar
  2. If the page requires a context, you can pass it this way:
  3. public class MyTest extends Assert
  4. {
  5. @Test
  6. public void test1()
  7. {
  8. String appPackage = "org.example.app";
  9. String appName = "LocaleApp";
  10. PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
  11. Object[] context = new Object[]{ "abc", 123 };
  12. Document doc = tester.invoke(new ComponentInvocation(new PageLinkTarget("MyPage"), context));
  13. assertEquals(doc.getElementById("id1").getChildText(), "hello");
  14. }
  15. }

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:

  1. public class MyTest extends Assert
  2. {
  3. @Test
  4. public void test1()
  5. {
  6. String appPackage = "org.example.app";
  7. String appName = "LocaleApp";
  8. PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
  9. Document doc = tester.renderPage("MyPage");
  10. Element link = doc.getElementById("link1");
  11. doc = tester.clickLink(link);
  12. assertTrue(doc.toString().contains("abc"));
  13. }
  14. }

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:

  1. public class MyTest extends Assert
  2. {
  3. @Test
  4. public void test1()
  5. {
  6. String appPackage = "org.example.app";
  7. String appName = "LocaleApp";
  8. PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
  9. Document doc = tester.renderPage("MyPage");
  10. Element form = doc.getElementById("form1");
  11. Map<String, String> fieldValues = new HashMap<String, String>();
  12. fieldValues.put("field1", "hello");
  13. fieldValues.put("field2", "100");
  14. doc = tester.submitForm(form, fieldValues);
  15. assertTrue(doc.toString().contains("abc"));
  16. }
  17. }

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单元测试相关推荐

  1. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试

    首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...

  2. 写算子单元测试Writing Unit Tests

    写算子单元测试Writing Unit Tests! 一些单元测试示例,可在tests/python/relay/test_op_level3.py中找到,用于累积总和与乘积算子. 梯度算子 梯度算子 ...

  3. 写单元测试应该注意什么

    写单元测试应该注意什么 转载于:https://www.cnblogs.com/yishenweilv/p/10899695.html

  4. Atitti mybatis的单元测试attilax总结

    Atitti mybatis的单元测试attilax总结 版本mybatis 3.2.4 /palmWin/src/main/java/com/attilax/dao/mybatisTest.java ...

  5. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  6. android 找不到类文件,Android Studio单元测试找不到类文件!

    就是一个方法里面逻辑比较多,查数据库,循环等等.比较复杂,我想测试一下他.是没有返回值的,我想看运行完成之后看看最后里面的变量是不是对的 如果跑整个程序的话就太慢了, 编译,运行, 登陆 等等.太长了 ...

  7. java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法

    最近一段时间都是在补之前的技术债,一直忙着写业务代码没有注重代码的质量,leader也在强求,所有要把单元测试搞起来了 我把单元测试分为两种 一个是service的单元测试,一个是controller ...

  8. JUnit单元测试依赖包构建路径错误解决办法

    JUnit单元测试依赖包构建路径错误解决办法: 选中报错的项目文件夹→右击选择属性(ALT+Enter)→java构建路径→库→添加库→JUnit→选择合适的Junit库版本.

  9. kotlin + springboot 整合redis,Redis工具类编写及单元测试

    参考自:  https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 1.maven依赖 <?xml ve ...

  10. Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

    在Junit4中还有的测试注解有:  @BeforeClass ,@Before,@Test,@After,@AfterClass 1.其中:@BeforeClass,@AfterClass是Juni ...

最新文章

  1. 【hibernate框架】核心开发接口-saveOrUpdate方法与delete方法
  2. 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...
  3. 上帝造题的七分钟(ybtoj-树状数组)
  4. PyQt5 打包问题解决 Unable to find “D:\anaconda3\lib\site-packages\PyQt5\Qt\translations\qtwebengine_locale
  5. Ubuntu下解决文件名mp3标签和文本文件内容的乱码问题
  6. 吉他扒谱该怎么做?分享一款超好用的扒谱工具!
  7. 软件测试——决策表法
  8. python掷骰子小游戏编程入门_MicroPython实战:开发一款掷骰子小游戏
  9. java nio 断开连接_JAVA NIO写服务端判断客户端断开连接的方法
  10. 图神经网络在知识图谱中的应用
  11. 【分析】Ceph数据一致性检查 - Scrub的执行
  12. 银河麒麟高级服务器操作系统V10下载安装及安装docker
  13. 2015年计算机二级office,2015年计算机二级MSoffice考试资料汇总.doc
  14. 为什么编c语言总有一个错误,为什么程序最后总会显示有1个错误
  15. 微信签到积分换卷小程序(完整前后台)
  16. Python爬虫入门一(爬虫基础)
  17. 神经网络学习笔记3——LSTM长短期记忆网络
  18. Zookeeper 简介
  19. 【从0到1搭建LoRa物联网】19、LoRa串口透传例程(补充)
  20. python中形参只在函数内部有效_【Python】函数

热门文章

  1. 各尺寸学术会议海报模板[转]
  2. matlab制作科学计算器,MATLAB科学计算器设计
  3. AIX操作系统使用心得
  4. ad09只在一定范围内查找相似对象_AD常用快捷键
  5. 常用的java包_java的常用包
  6. 《皇帝新脑》读书笔记(一)
  7. Java8 实战系列-05-lambda 类型推断
  8. 最牛的支付渠道-“代扣”
  9. matlab工具箱有哪些函数,matlab工具箱函数汇总(上)
  10. python办公软件教程书籍_针对office办公软件初学者有什么推荐书籍?