上一节说了junit的一些基本概念,主要使用assert做一些基本的判断。但很多时候使用assert做判断,并不方便,如果要判断某几个值是否为true或false,这时使用hamcrest来判断就会方便许多。hamcrest就是专门为增强junit来提供的框架。它可以有效的使用一些语义比较清楚的名字来做判断,一些常用的方法如下:
1、下面使用hamcrest在上一节的例子上继续操作。使用junit中的assertThat进行断言,第一个参数为实际值,第二个参数为hamcrest的表达式。
在上一节的测试类TestCalcuate中,先静态导入hamcrest包中的Matchers类,如下图:
2、添加下图所示的测试方法,在测试方法testHamcrest方法中,把junit与hamcrest结合使用,方法assertThat方法是junit的方法,greaterThan方法是hamcrest的方法,greaterThan判断第一个参数是否>第二个参数,这里就是判断50是否大于20。
3、如果要判断第一个参数是否大于20,并且小于60,这时可以使用正面的方式:
4、这时使用junit进行测试,如果测试通过,代表50确实大于49,小于60,如果出现如下错误:
5、其原因是因为资源路径里junit的jar包在hamcrest的jar包上面,java运行环境先从junit包中查找allOf方法,但是这里使用的是hamcrest的allOf方法。从资源路径里把两个包的路径换一下就可以了。如下图,选择hamcrest的jar包点击up,就可以反hamcrest的jar包放在junit的jar包的上面,java运行环境就会优先从hamcrest包中查allOf方法。
6、使用hamcrest还可以判断一个字符串是否以某个字符串开始或结尾。
7、在一个项目中,可能有很多的测试类,如果每个测试类都要点击运行,那么成百上千个类都需要测试,这会是个比较繁重的工作,这时可以使用可以使用junit的jar包中提供的Suite来解决这个问题,上面的例子中只有一个测试类名叫TestCalcuate,现在新建两个测试类,分别为TestA、TestB,如下所示:
package cn.whp.util; import org.junit.Test; public class TestA { @Test public void testA(){ System.out.println("TestA"); } }
package cn.whp.util; import org.junit.Test; public class TestB { @Test public void testB(){ System.out.println("TestB"); } }
8、然后新建一个测试类TestSuite,这个类可以把以上三个类,TestCalcuate、TestA、TestB,这三个测试方法同事进行测试。如下所示,
@RunWith(Suite.class)//代表以Suite来运行这个测试类
@SuiteClasses({TestA.class,TestB.class,TestCalcuate.class})//代表要测试的类有哪些。
package cn.whp.util; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({TestA.class,TestB.class,TestCalcuate.class}) public class TestSuite { public void testSuite(){ System.out.println("TestA"); } }
如上操作完成后点击运行,就可以看到所有的测试方法全通过的信息,如下所示:
测试原则:
1、建议创建一个专门的source folder--->test来编写测试类代码。上面例子就新建一个test的资源包。
2、测试类的包应该保持和需要测试的类一致。上面的例子中Calcuate类在src/cn/whp/util包中,相应的测试类就在test/cn/whp/util中。
3、测试单元中的每个测试方法都必须可以独立执行,不相互依赖,没有顺序。
相关推荐
包含Junit 4.12 及 hamcrest-core 1.3 所有jar包 ,为JUnit最新工具包。
junit4.11+hamcrest-all-1.3.jar, junit4.11+hamcrest-all-1.3.jar, junit4.11+hamcrest-all-1.3.jar, junit4.11+hamcrest-all-1.3.jar
junit eclipse testcast Testsuite 源码 和文档
JUnit4.11 及 hamcrest1.3 jar包。
JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。 2 单元测试概念 单元:在Java中,一个类就是一个单元 单元测试:程序猿编写的一小段代码,用来对某个类中的...
包含 Junit + Hamcrest + Mockito 单元测试涉及到的三个jar包,分别是junit.jar、hamcrest-2.2.jar、mockito-core-3.2.4.jar
进行项目测试时为了进行junit测试生成HTML文档这是必须的包,有时官网会延迟不好下载,这里提供给大家学习参考
junit-4.12.jar hamcrest-library-1.3.rc2.jar hamcrest-core-1.3.rc2.jar,单元测试框架JUnit必须引用的jar包
junit4.7以及hamcrest-core-1.3
开发junit4所用到的3个jar包,可用最新断言assertThat,包括了hamcrest-core-1.3.0RC2.jar, hamcrest-library-1.3.0RC2.jar和 junit-4.8.1.jar三个jar包
junit-4.11.jar hamcrest-core-1.3.jar
assertThat断言语句 Marchers提供各种数值匹配方法、字符串匹配方法使用
junit.jar + hamcrest-core.jar + hamcrest-library.jar,测试必备包
junit 和 hamcrest jar集成 (junit-4.8.2.jar,junit-4.11.jar,junit-4.11-javadoc.jar,junit-4.11-sources.jar,hamcrest-core-1.3.jar,hamcrest-library-1.3.jar
junit-4.11和hamcrest-core-1.3 的jar包,用于java 单元测试,需要的可以下载
初次写testsuite会遇到“NO runnable methods”,添加@Test也没有解决问题,看了多个文档实例,终于解决了这个问题,愿意跟大家一起分享,添加了资源分2分,迫于我去下载资源跟我要分啊。java源代码。
这是JUnit4.12及hamcrest-core-1.3的jar包,用eclipse进行Junit测试时会用到
用到这个包在网上找了半天没有东一个西一个 下载出来还不能用。打包这分享下最终测试可以用的