本文概览:介绍了Junit和Hamcrest的使用。其中Hamcrest是为了配合Junit中asserThat方法来使用的。

1 Junit

1.1 maven库

1.2  常用注解

如下是五个常用的注解

  • @BeforeClass ,后接的方法public staic init(),在所有测试方法前,只跑一次;
  • @Before, 后接的方法,public void setup();每个test方法跑之前跑一次
  • @Test,要测试的方法,都是public类型
  • @After,和@Before对应
  • @AfterClass,和@BeforeClass对应

1、@BeforeClass

1.3 常用断言

常用的断言如下:

  • Assert.assertEqunal(expected,actual)  比较两个对象是否相等,类似于字符串的equals()方法。
  • asserTrue(conditon)查看condition是否为true。为ture时说明成功。
  • assertThat(actual,matcher)   在单元测试时我们都是使用这个断言,所以引入了下一节的Hamcrest,Hamcrest就是提供了各种matcher.

1.4 对于异常的两种测试

1、判断异常类型

2、判断异常message是否正确

2 Hamcrest

2.1 介绍

1. 配合junit.Assert.asserThat中来使用的。如下junit.Assert.asserThat中有两个参数,其中一个就是Hamcrest提供的matcher.

2. pom.xml

2.2   经常使用的matcher

包括两个包org.hamcrest.CoreMatchers和org.hamcrest.Matchers

1.org.hamcrest.CoreMatchers

  • assertThat( number, allOf( greaterThan(10), lessThan(15) ) ):相当于“与”(&&),即allOf中条件都必须成立
  • assertThat( number, anyOf( greaterThan(30), lessThan(1) ) ):相当于“或”(||),即只要anyOf中有一个条件成立就可以了
  • assertThat( number, anything() ):无论什么条件,永远为true
  • assertThat( string, is( “engine” ) )和assertThat( string, equalTo( expectedValue ) ):两个作用是一样的,只是写法不同,都是Object的equals方法
  • assertThat( string, not( “engine” ) ):not匹配符和is匹配符正好相反

2. org.hamcrest.Matchers

(1)字符串相关匹配符

  • assertThat( string, containsString( “engine” ) ):包含子字符串”engine”则测试通过
  • assertThat( string, endsWith( “engine” ) ):以子字符串”engine”结尾则测试通过
  • assertThat( string, startsWith( “engine” ) ):以子字符串”engine”开始则测试通过
  • assertThat( testedString, equalToIgnoringCase( “engine” ) ); 忽略大小写的情况
  • assertThat( testedString, equalToIgnoringWhiteSpace( “engine” ) ):忽略头尾的任意个空格
  • assertThat( string, is( “engine” ) ):判断两个字符串相等

(2)数值相关匹配符

  • assertThat( number, closeTo( 10.0, 0.1 ) ):在10.0±0.1范围之内则测试通过
  • assertThat( number, greaterThan(11) ):大于11则测试通过
  • assertThat( number, lessThan (11) ):小于11则测试通过
  • assertThat( number, greaterThanOrEqualTo (11) ):大于等于11则测试通过
  • assertThat( number, lessThanOrEqualTo (11) ):小于等于11则测试通过

(3)collection相关匹配符

  • assertThat( map, hasEntry( “key”, “value” ) ):mapObject含有一个键值为”key”对应元素值为”value”测试通过
  • assertThat( list, hasItem ( “element” ) ):iterableObject含有元素“element”项则测试通过
  • assertThat( map, hasKey ( “key” ) ):mapObject含有键值“key”则测试通过
  • assertThat( map, hasValue ( “key” ) ):mapObject含有元素值“value”则测试通过

3.代码

 

3 常见问题

1、Junit测试类中获取Spring上下文

直接在测试类,添加一个

举例如下:

 

(全文完)

 

 

 

分类&标签