- 浏览: 117090 次
- 性别:
- 来自: 哈尔滨
最新评论
-
1054442516:
大哥,小弟刚入门一个月。请tapestry如何集成Mybati ...
(C4)Tapestry IoC:Tapestry IoC Decorators -
walkerstar:
我都是这样做的 public void contribute ...
(2)Tapestry5学习小结:中文验证问题 -
hongyuzhe:
我是真的,那么的那么的希望能多贴出一些,代码说出来。既然能翻译 ...
(A18)Tapestry Core :Configuring Tapestry -
changshuangyi:
问个问题呀,我写的时候为什么private UserAuthe ...
(A6)Tapestry Core:Form Input and Validation -
zhenjw:
怪不得我想看5.0的源代码看不了,原来是没有真正的开放出来呢。 ...
(3)Tapestry5学习小结:显示问题
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf
页面或组件的单元测试
你可以非常容易的对某一页面或组件进行单元测试。跟随下面简单的工作:
-
设置一个操作环境
为了测试页面,你需要创建一个PageTester.实例。它担当浏览器和servlet容器以使你可以使用它驾驭你的页面。事实上它不是一个真正的servlet容器,你需要告诉它你定义在web.xml中的同样信息:
- 你的应用包
- 你的过滤器名。这仅被用来装载你的Tapestry IoC模块。如果你没有,你可以传递一个空字符串或任何东西给它。
- 担当你上下文根目录的文件夹。这被用来定位你的模版(如果它们放在那里)。
这是一个例子(使用TestNG,但你也可以使用JUnit或其他的):
- public class MyTest extends Assert
- {
- @Test
- public void test1()
- {
- String appPackage = "org.example.app";
- String appName = "App1"; // App1Module.java has configured some services.
- PageTester tester = new PageTester(appPackage, appName, "src/main/webapp");
- }
- }
-
测试呈现页
要测试页面是否完全呈现,你可以告诉PageTester去呈现它,然后对返回的DOM文档(DOM Document)进行断言。
这是个例子。让我们假定被测试页名为”MyPage”并且它应该返回一个包含id为”id1”的HTML元素的页面并且它的文本内容应该是”hello”
- 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");
- assertEquals(doc.getElementById("id1").getChildText(), "hello");
- }
- }
如果页面需要一个文本,你可以通过这种方法传递:
- 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");
- }
- }
-
测试一个action 链接
页面呈现后,你应该想要”点击”一个action链接,然后对结果页断言。你可以这样做:
- 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"));
- }
- }
-
测试表单提交
页面呈现后,你应该想要填充表单,提交它然后检查结果页。你可以这样做:
- 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 fieldValues = new HashMap();
- fieldValues.put("field1", "hello");
- fieldValues.put("field2", "100");
- doc = tester.submitForm(form, fieldValues);
- assertTrue(doc.toString().contains("abc"));
- }
- }
通过点击一个提交按钮提交表单,调用clickSubmit()方法。
-
组件的单元测试
要对组件进行单元测试,仅需要创建一个包含这个组件的测试页面。然后测试这个页面就可以了。.
-
提供mock执行你的服务层
你的页面典型的是调用你的业务逻辑并且最终涉及到数据库。在单元测试时,尤其是测试你的UI(页面)时,强烈建议你不要调用它们。为了这样做,你应该放入你的事物控制代码,业务逻辑等到Tapestry IoC服务内。然后你应该使用mock 对象替换它们的执行。
- public class MyTest extends Assert
- {
- @Test
- public void test1()
- {
- String appPackage = "org.example.app";
- String appName = "LocaleApp";
- Map serviceOverrides = new HashMap();
- Service1 service1Mock = new Service1() {
- public Object transform(Object input) {
- //assert against the input and return some mock value
- }
- }
- Service2 service2Mock = new Service2() {
- public void perform(Object cmd) {
- //assert against the cmd
- }
- }
- serviceOverrides.put("Service1", service1Mock);
- serviceOverrides.put("Service2", service2Mock);
- PageTester tester = new PageTester(appPackage, appName, "src/main/webapp", serviceOverrides);
- }
- }
发表评论
-
(3)Tapestry5学习小结:显示问题
2007-06-27 11:34 5394显示问题 我在做验证的 ... -
(2)Tapestry5学习小结:中文验证问题
2007-06-27 10:54 4437Tapestry5学习小结:中文验证问题 Tapestry5. ... -
(1)Tapestry5学习小结:中文问题
2007-06-27 10:29 5617(1) Tapestry中文问题 在目前的Tapestr ... -
(F1)Tapestry Upload:Tapestry Upload Component
2007-06-23 12:41 2922本文翻译出处 http://tapestry.apac ... -
(E1)Tapestry-Test
2007-05-28 16:06 3179本文翻译出处 http://tapestry.apache ... -
(D1)Tapestry-Spring Integration
2007-05-28 15:17 3835本文翻译出处 http://tapestry.apache ... -
(C15)Tapestry IoC:Service Builders Shadow Services
2007-05-28 13:45 2613本文翻译出处 http://tap ... -
(C14)Tapestry IoC:Service Builders Building Pipelines
2007-05-28 12:45 2482本文翻译出处 http://tapestry.apache. ... -
(C13)Tapestry IoC:Service Builders Strategy Pattern
2007-05-28 11:30 2245本文翻译出处 http://tap ... -
(C12)Tapestry IoC:Service Builders Chain of Command
2007-05-28 10:10 2267本文翻译出处 http://tap ... -
(C11)Tapestry IoC:Ordering by Constraints
2007-05-27 15:27 2028本文翻译出处 http://tap ... -
(C10)Tapestry IoC:Object Providers
2007-05-27 14:38 2216本文翻译出处 http://tapestry.apache ... -
(C9)Tapestry IoC:Starting the Registry
2007-05-27 11:44 1947本文翻译出处 http://tap ... -
(C8)Tapestry IoC:Symbols
2007-05-27 10:48 2008本文翻译出处 http://tapestry.apache ... -
(C7)Tapestry IoC:Case Insensitivity
2007-05-26 17:02 1642本文翻译出处 http://tapestry.apache ... -
(C6)Tapestry IoC:Type Coercion
2007-05-26 14:29 1752本文翻译出处 http://tap ... -
(C5)Tapestry IoC:Tapestry IoC Configurations
2007-05-26 09:19 1751本文翻译出处 http://tapestry.apache ... -
(C4)Tapestry IoC:Tapestry IoC Decorators
2007-05-25 10:19 1845本文翻译出处 http://tapestry.apache ... -
(C3)Tapestry IoC:Tapestry IoC Services
2007-05-24 13:04 1874本文翻译出处 http://tapestry.apache ... -
(C2)Tapestry IoC:Tapestry IoC Modules
2007-05-22 12:47 2056本文翻译出处 http://tapestry.apache ...
相关推荐
欧姆龙旋钮型选择开关(圆型φ22) A22R□说明书pdf,欧姆龙旋钮型选择开关(圆型φ22) A22R□:高品位的按钮开关,满足各方面的需求。采用金属装饰环,成就牢固、高品味的面板设计。圆角形的设计加工,彰显人性化。开关...
A22版本。 此软件包中包含 BIOS 更新,适用于运行 Windows 和 DOS 操作系统的戴尔 OptiPlex 3010。BIOS 是嵌入在计算机系统板上的小型内存芯片上的固件。它可以控制键盘、显示器、磁盘和其他设备。此软件包修复了...
欧姆龙钥匙型选择开关(圆型φ22/25) A22Kpdf,欧姆龙钥匙型选择开关(圆型φ22/25) A22K:φ22和φ25共用。可用摆杆方便的拆卸单元。开关部位3列安装,提高了布线效率。标准配备了防指触功能的开关。使用φ25用的环还能...
欧姆龙钥匙型选择开关(圆型φ22) A22RK说明书pdf,欧姆龙钥匙型选择开关(圆型φ22) A22RK:高品位的按钮开关,满足各方面的需求。采用金属装饰环,成就牢固、高品味的面板设计。圆角形的设计加工,彰显人性化。开关部...
欧姆龙按钮开关(圆型φ22) A22Rpdf,欧姆龙按钮开关(圆型φ22) A22R:高品位的按钮开关,满足各方面的需求。采用金属装饰环,成就牢固、高品味的面板设计。圆角形的设计加工,彰显人性化。开关部可以叠加,能够灵活...
《LoRa39c_t400a22d1a 远距离通信技术详解》 LoRa39c_t400a22d1a是一款基于LoRa(Long Range)技术的远距离通信模块,它在物联网(IoT)领域广泛应用,尤其在低功耗、广覆盖的场景中表现出色。本资料包涵盖了该模块的...
奥姆龙(Omron)A22E紧急停止按钮开关是一款工业用的电子控制设备,它用于在紧急情况下快速切断电路,确保设备和人员的安全。从提供的文件内容中,我们可以提取出多个与该产品相关的知识点,具体如下: 1. 产品概述...
wbexe647_a22.exe
《A22R_M22R系列按钮开关与信号灯选型指南》 在工业自动化领域,按钮开关和信号灯是不可或缺的元件,它们在设备控制、生产线监控以及操作界面中发挥着至关重要的作用。A22R和M22R系列作为这类产品的代表,以其优异...
欧姆龙旋钮型选择开关(圆型φ22/25) A22□pdf,欧姆龙旋钮型选择开关(圆型φ22/25) A22□:φ22和φ25共用。可用摆杆方便的拆卸单元。开关部位3列安装,提高了布线效率。标准配备了防指触功能的开关。使用φ25用的环...
根据提供的文件内容,A22R和M22R系列按钮开关的相关知识点如下: 1. 产品系列名称和用途 文件中提到的A22R/M22R系列按钮开关是用于机械、工业、电子等设备中的操作控制元件。它们通常作为电子设备或机械装备上的...
穆勒产品介绍——A22按钮指示灯ppt,穆勒产品介绍——A22按钮指示灯
thinkpad a22m mouse 驱动程序
欧姆龙A22E系列安全停止开关是一种用于工业安全控制的重要设备,主要设计为22直径或25直径面板开孔安装。该产品的特点包括: 1. 直接开启机制:当接触点焊接时,该机制能自动断开电路,以确保在故障情况下能够快速...
欧姆龙按钮开关(圆型φ22/25) A22pdf,欧姆龙按钮开关(圆型φ22/25) A22:φ22和φ25共用(使用环时)。可用摆杆方便的拆卸单元。开关部位3列安装,提高了布线效率。标准配备了防指触功能开关。φ25用的环还能对应φ25的...
但是,我可以根据提供的标题和描述,以及通用的行业知识来描述“默勒 按钮和指示灯A22系列选型手册”的相关知识点。 标题:“默勒 按钮和指示灯A22系列选型手册.pdf” 描述:“默勒 按钮和指示灯A22系列选型手册pdf...
DELL 笔记本电脑 E4200最新版BIOS A22版
你好 :waving_hand: ,我是Avinash A Kanaujiya 来自印度的热情开发者。 我目前正在纯粹出于教育兴趣而开发自己的手工博客。 我目前正在与11ty &一起玩,正在学习操作系统,同时熟悉DSA 。 :closed_mailbox_with_...
为了应对紧急情况并确保设备与人员的安全,欧姆龙公司开发了A22E系列急停按钮,这系列按钮是工业自动化领域中不可或缺的安全防护设备。本文将详细介绍欧姆龙A22E急停按钮的功能特点和选型参数,以帮助用户根据自身...
【标题】:“A22-JV65.zip”是一个压缩文件,其中包含了关于“电影《我不是药神》的响应式页面设计”的相关素材。这个压缩包可能是一个项目或教程的一部分,用于展示如何创建一个响应式的网页,特别是针对这部电影的...