在以前的junit测试中常用到断言,但是没有研究断言的源代码,最近在项目中采用swtbot时候,发现项目swtbot和junit底层都使用了hamcrest作为匹配工具 的.
SWTBot中finder中采用的是Hamcrest实现的.其中常用的如下:
1,WithText可以matcher有getText方法的swt widget。
2,WithLabel用来matcher特定的Label和CLabel widget。
3,WithId用来matcher控件的属性和值对。
4,WithMnemonic用来matcher有getText方法且会有助记符&的widget。
5,WidgetOfType用来matcher控件的类名。
6, WithToolTip可以matcher有getToolTipText方法的swt widget。
7,WithItem可以matcher有getItems方法的swt widget。
8,WithStyle可以matcher有特定样式的swt widget,如withStyle(SWT.PUSH,”SWT.PUSH”)。
9,WithRegex扩展withText用来matcher文本正则表示的widget。
10,InGroup可以在一个group内matcher swt widget。
11,InUIThread在一个UIThread内matcher另一个matcher。
12, AllOf用来定义matcher方法集来区配swt widget。
Hamcrest是什么东西呢?
Hamcrest是一个书写匹配器对象时允许直接定义匹配规则的框架.有大量的匹配器是侵入式的,例如UI验证或者数据过滤,但是匹配对象在书写灵活的测试是最常用.本教程将告诉你如何使用Hamcrest进行单元测试.
Hamcrest从一开始就设计结合不同的单元测试框架.例如,Hamcrest可以使用JUnit3和4和TestNG.(详细查看完整Hamcrest发布中的例子).在一个现有的测试套件中迁移到使用Hamcrest风格的断言是很容易的,因为其他断言风格可以和Hamcrest的共存.
通过使用从mock Objects框架概念匹配器到Hamcrest匹配器桥接适配器Hamcrest也可以在mock objects框架中.例如,JMock 1系统规定是Hamcrest风格.Hamcrest提供了一个JMock 1适配器来允许你在JMock 1测试中使用Hamcrest匹配器.JMock 2不需要这样一个适配器层,因为它被设计使用Hamcrest作为一个匹配库.Hamcrest还提供了EasyMock 2适配器.同样,详细查看Hamcrest例子.
Hamcrest带有一个有用的匹配器库.以下是一些最重要的.
- 核心
- anything - 总是匹配,如果你不关心测试下的对象是什么是有用的
- describedAs - 添加一个定制的失败表述装饰器
- is - 改进可读性装饰器 - 见下 “Sugar”
- 逻辑
- allOf - 如果所有匹配器都匹配才匹配, short circuits (很难懂的一个词,意译是短路,感觉不对,就没有翻译)(像 Java &&)
- anyOf - 如果任何匹配器匹配就匹配, short circuits (像 Java ||)
- not - 如果包装的匹配器不匹配器时匹配,反之亦然
- 对象
- equalTo - 测试对象相等使用Object.equals方法
- hasToString - 测试Object.toString方法
- instanceOf, isCompatibleType - 测试类型
- notNullValue, nullValue - 测试null
- sameInstance - 测试对象实例
- Beans
- hasProperty - 测试JavaBeans属性
- 集合
- array - 测试一个数组元素test an array’s elements against an array of matchers
- hasEntry, hasKey, hasValue - 测试一个Map包含一个实体,键或者值
- hasItem, hasItems - 测试一个集合包含一个元素
- hasItemInArray - 测试一个数组包含一个元素
- 数字
- closeTo - 测试浮点值接近给定的值
- greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo - 测试次序
- 文本
- equalToIgnoringCase - 测试字符串相等忽略大小写
- equalToIgnoringWhiteSpace - 测试字符串忽略空白
- containsString, endsWith, startsWith - 测试字符串匹配
相关推荐
这个文件包含了Hamcrest库的源代码,对于开发者来说,它是学习和调试Hamcrest的关键资源。通过查看源码,我们可以了解Hamcrest内部的工作原理,定制自己的Matcher,或者在遇到问题时进行深入调试。 4. **使用示例*...
你可以解压并参考其中的内容,学习如何在你的项目中集成JUnit和Hamcrest,以及如何配置生成HTML测试报告。 总之,JUnit和Hamcrest是Java开发中的重要工具,它们可以帮助我们编写可维护的测试代码,并通过可视化的...
4. 文档和示例:帮助用户理解和学习如何使用Hamcrest进行测试。 通过这些组件,开发者可以充分利用Hamcrest的强大功能,编写出更简洁、更具表达力的测试代码,从而提高测试的效率和质量。 总之,Hamcrest 1.3RC0是...
总之,这个压缩包包含的三个库——JUnit 4.12, Hamcrest-Core-1.3和System-Rules-1.18.0,是Java开发者进行单元测试和学习Spring框架不可或缺的工具。它们共同为编写可维护、可扩展且可靠的Java应用程序提供了坚实的...
Java测试领域中,Hamcrest是一个强大的库,它使得编写具有表现力的断言变得更加简单和直观。本篇文章将深入探讨如何使用Hamcrest来编写富有表现力的单元测试。 **Hamcrest简介** Hamcrest是一个Java匹配器库,它的...
`spring-boot-starter-test`模块包含了JUnit、Mockito、Hamcrest等测试工具,简化了测试代码编写。你可以使用`@SpringBootTest`注解来启动整个应用进行集成测试,或者使用`@DataJpaTest`针对数据访问层进行测试。 6...
这个模块添加了对Scala特定类型的识别,如case类、Option、Either、Map、自定义类型标记等,使得JSON序列化和反序列化变得更加简单和直观。开发者可以通过使用这个模块,避免手动编写JSON解析和生成的代码,提高代码...
JUnit作为Java中最流行的单元测试框架,提供了丰富的API和功能,使得测试编写变得简单易行。 在JUnit3.8中,测试类通常会继承自`junit.framework.TestCase`类。这个基类提供了许多便利的方法,如`setUp()`和`...
JUnit是一个开源项目,它提供了一套简单的注解和接口来定义和运行测试用例。例如,`@Test`注解标记在方法上表示该方法为一个测试用例,`@Before`和`@After`分别用于定义在每个测试方法之前和之后执行的代码(通常...
Junit作为一个轻量级的库,提供了丰富的断言方法和注解,使得创建和运行这些测试变得简单而直观。 Junit 4.13版本是我们在这里讨论的重点,这是Junit的一个稳定版本,包含了众多改进和修复。其中,`junit-4.13.jar`...
2. 集成测试:虽然其主要定位是单元测试,但通过与其他工具结合,也可以进行简单的集成测试。 3. 持续集成:在持续集成环境中,JUnit 测试可以作为构建的一部分,确保每次代码提交后都能快速发现问题。 四、文件...
Bean Query 复用Apache Commons BeanUtils, Apache Commons Collections和Java Hamcrest 来简化对Bean(集合)的排序,过滤和转换。 文档 阅读 使用说明来学习怎么使用 BeanQueryExample.java用Junit...
潜水简单的可自定义字节码分析工具描述一个研究项目旨在使用和框架学习静态和动态字节码分析技术。动机和目标要评估字节码框架,请应用几个软件工程原理,包括MVC架构范例,IoC概念和几个设计模式。 使用Mockito,...
8. **Hamcrest匹配器**:JUnit 4.11集成了Hamcrest库,提供了一套强大的匹配器,使得断言更加清晰和可读。 9. **测试套件**:`@Suite`注解可以组合多个测试类,一次性运行。 10. **运行器**:JUnit 4支持自定义...
3. **断言库**:如Hamcrest或AssertJ,用于验证预期结果是否与实际结果相符。断言是测试的关键,确保程序行为符合预期。 4. **数据驱动测试**:通过提供数据集来运行多次相同测试,但每次使用不同的输入数据。例如...
除了基本的断言,JUnit还提供了更复杂的断言选项,如assertArrayEquals用于数组比较,assertThat则允许使用Hamcrest匹配器进行更为灵活的断言。此外,JUnit还支持异常测试,可以验证方法是否抛出了预期的异常。 ...
在这个名为 "springboot-hello" 的项目中,我们可以看到一个基础的 Spring Boot 应用实例,用于学习和实践。 在描述中提到的 "访问" 暗示了这是一个具有 Web 功能的示例。Spring Boot 提供了对 Spring MVC 的集成,...
在"springboot-demo"项目中,你可以从这些方面入手,逐步学习和实践SpringBoot的基本使用,包括创建RESTful服务、连接数据库、实现简单的页面展示以及添加监控功能。随着对SpringBoot理解的深入,你会发现它极大地...
JUnit是Java领域最广泛使用的单元测试框架之一,它为开发者提供了简单、灵活的API来编写和执行测试用例,从而确保代码的质量和稳定性。 在Java开发中,单元测试是一项至关重要的任务,它允许程序员在早期发现并修复...