用了JUnit有一段时间了,竟然从来没有用过assertThat。assertThat是JUnit在引入hamcrest后加入的新语句。这也难怪,JUnit的入门教程中使用的都是assertEquals,一看就懂;相对来讲assertThat的语法就比较晦涩难懂了,而且还需要学习一堆不知道什么时候才要用到的匹配器对象。
本来书写简单的单元测试确实并不需要用到assertThat,但是当需要对断言或条件进行测试,并显示条件的详细信息时,使用hamcrest来进行处理就比较好了。
比如希望测试一个整数是否大于0时,使用JUnit原有的语可以这样写
@Test
public void test() throws Exception {
int i = 0;
assertTrue("The input number should be greater than 0", i > 0);
}
输出的错误信息将是
java.lang.AssertionError: The input number should be greater than 0
如果我们需要输出更详细的信息,如 expected condition "i > 0", but actual value was "-1" ,就需要定义自己的Exception,并输入更多的参数,像这样:
int i = -1;
assertConditionSatisfied("i > 0", i > 0, i);
而使用 hamcrest 写起来要简单一些:
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
@Test
public void test() throws Exception {
int i = 0;
assertThat(i, greaterThan(0));
}
将会有这样的输出
java.lang.AssertionError:
Expected: a value greater than <0>
got: <0>
通过定位我们能够找到出错的那一句,从而能够比较快的了解出错的原因。
更多参考请见:
hamcrest 主页 http://code.google.com/p/hamcrest
hamcrest 工程的中文简要介绍 http://www.oschina.net/p/hamcrest
hamcrest 使用简介 http://rdc.taobao.com/blog/qa/?p=3541
plus: 一个eclipse中出现错误的解决方法
java
.lang
.SecurityException: class
"org
.hamcrest
.Matchers
"'s signer
information
does
not
match
signer
information
of
other
classes
in
the
same
package
该错误的原因是:我在这里引用了hamcrest-all,而JUnit内部也使用了hamcrest,所以在加载类的时候版本顺序出了错误,只要调整一下hamcrest-all包的位置改在JUnit包之前即可
参考自:http://emptylist.wordpress.com/tag/junit/
Anyway, to solve the problem you have
just to load the Lambdaj jar before the JUnit stuff (Properties, Java
Build Path, Order and Export).
分享到:
相关推荐
然而,为了实现更复杂的断言,JUnit通常需要与其他库结合使用,其中Hamcrest是一个非常重要的辅助工具。"hamcrest-library-1.3和hamcrest-core-1.3.rc2.zip"这个压缩包包含了Hamcrest的两个关键组件,它们对于增强...
总结,Hamcrest是一个强大且灵活的测试工具,通过其强大的匹配器和声明式断言,能够帮助开发者编写出优雅、可读的测试代码,提高测试的质量和效率。理解并熟练运用Hamcrest,是每个Java测试工程师的必备技能。
总之,Hamcrest Core作为JUnit的重要辅助工具,为我们的测试工作带来了便利。理解不同版本之间的差异和选择适用版本,有助于优化测试流程,提高测试效率。无论你是初学者还是经验丰富的开发者,掌握Hamcrest Core的...
无论如何,这个文件同样是Hamcrest库的一部分,包含了一组扩展的匹配器类,可以辅助开发者编写复杂的测试逻辑。 使用Hamcrest进行单元测试时,开发者可以创建自定义的匹配器,也可以使用预定义的匹配器如`...
JUnit测试jar包通常包含了JUnit框架的核心库和其他可能的扩展或辅助库,使得开发人员可以在他们的项目中引入这些测试工具。这个压缩包很可能包含了JUnit的不同版本,例如JUnit4或JUnit5,以及可能的依赖如Hamcrest...
2. **丰富的库支持**:Java拥有丰富的第三方库,可以方便地集成到自动化测试中,如JUnit用于组织测试用例,Hamcrest用于断言,Apache Commons Lang等用于辅助功能。 3. **灵活性高**:由于Java的广泛使用,社区支持...
`hamcrest-library-1.3.jar`则是Hamcrest的扩展库,它提供了更多的匹配器和辅助类,以满足更广泛的测试需求。这个库包含了对集合、字符串、数字等类型的高级匹配操作,以及用于构建自定义匹配器的工具。 在实际使用...
Hamcrest库是JUnit的重要辅助工具,包括hamcrest-library-1.3.rc2.jar和hamcrest-core-1.3.rc2.jar。这两个文件提供了匹配器(Matcher)的实现,帮助编写更清晰、更强大的断言。hamcrest-core-1.3.rc2.jar是基础库,...
通过`@Rule`注解,可以创建可重用的测试辅助组件,如资源管理、超时设置等。 6. **Hamcrest匹配器集成**:JUnit 4.9集成了Hamcrest库,提供了丰富的匹配器用于更复杂的断言,使得测试表达能力更强。 7. **测试套件...
源码分析是理解任何软件系统工作原理的关键,而工具则可能指的是测试框架、配置文件或其他辅助开发和测试的实用工具。 在压缩包内的文件名称列表 "springBootTest",这可能是一个项目文件夹,包含了Spring Boot应用...
在Java中,测试通常涉及JUnit(一个流行的单元测试框架)和其他辅助库,如Mockito(用于模拟对象),Hamcrest(匹配器库),或者PowerMock(用于模拟静态方法、构造函数等)。 在TestDemo项目中,开发者可能创建了...
9. **测试驱动开发(TDD)**:JUnit4是TDD的一个关键工具,它鼓励先编写测试,然后编写实现,确保代码质量。 源码部分可能包含各种测试案例,涵盖了上述知识点的实际应用。通过观看视频教程并动手实践这些代码,你...
Hamcrest 是一个测试辅助工具,提供了一套通用的匹配符 Matcher,灵活使用这些匹配符定义的规则,程序员可以更加精确地表达自己的测试思想,指定所想设定的测试条件。Junit4 结合 Hamcrest 提供了新的断言语句-...
除了JUnit,还有其他测试工具和库可以辅助进行更高级的测试,比如Mockito用于模拟对象行为,Hamcrest提供丰富的断言库,或者使用TestNG提供更灵活的测试配置。 集成测试是另一种测试层次,它关注的是系统中各个组件...
- **artifacts.jar**:可能包含了TestNG依赖的第三方库文件,比如Hamcrest、Mockito等,用于辅助测试或满足特定功能需求。 - **features**:此目录可能包含TestNG的一些特性描述或扩展功能,例如插件或模块的说明...
在“MockitoProject”中,可能包含了使用Mockito进行单元测试的示例代码、配置文件或其他辅助工具。这些内容可以帮助开发者更好地理解和应用Mockito进行测试驱动开发(TDD)或行为驱动开发(BDD),提高代码质量并...
自动测试的实现还需要依赖一些辅助工具和库,如Mockito用于模拟对象,使得测试更加隔离;Hamcrest或AssertJ提供丰富的断言方法,帮助我们准确地验证结果。此外,测试驱动开发(TDD)和行为驱动开发(BDD)也是自动...
本篇文章将深入探讨Appium的相关知识点,包括安装、主要特性、元素定位以及一些辅助工具。 首先,我们来看一下Appium的安装过程。安装Appium Desktop是一个简单的过程,可以从其官方GitHub仓库的release页面下载...
测试库通常包含一系列预定义的测试用例、断言方法和其他辅助工具,使得测试工作更加便捷和高效。 标签"Java"明确指出这个项目与Java语言密切相关。Java以其"一次编写,到处运行"的特性,以及强大的社区支持和丰富的...
Azuki-jersey-test可能提供了专门的测试工具和辅助类,使开发者能够快速编写针对Azuki和Jersey组件的单元测试,确保每个模块的功能正确无误。 2. **Mocking和Stubbing**:在测试过程中,mocking和stubbing技术用于...