您的位置:首页 > 产品设计 > UI/UE

Junit学习笔记之二:hamcrest简介和TestSuite

2016-10-21 23:21 344 查看
hamcrest可以有效增加junit的测试能力,用一些相对通俗的语言来进行测试

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
</dependency>


要使用junit中的assertThat来进行断言

第一个参数表示实际值,第二个参数表示hamcrest的表达式
@Test
public void testHamcrest() {
//首先需要静态导入import static org.hamcrest.Matchers.*;
//判断50是否大于20并且小于60,具体的hamcrest的比较参数可以在文档中查询
assertThat(50, allOf(greaterThan(20), lessThan(60)));
//判断某个字符串是否以另一个字符串结尾
assertThat("abc.txt", endsWith("txt"));
}

特别注意:如果使用junit4.10,必须把hamcrest的jar包移到junit的jar之前,否则,组合条件allOf,anyOf都会抛出异常

常用的比较方式

逻辑

  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 - 测试字符串匹配

可以通过TestSuit来组成多个测试组件

测试原则:1、建议创建一个专门的sourcefolder -àtest来编写测试类代码

     2、测试类的包应该保持和需要测试的类一致

     3、测试单元中的每一个测试方法都必须独立执行,没有顺序,测试方法之间不能有任何的依赖性

import org.junit.Test;

/**
* Created by Administration on 2016/6/4.
*/
public class TestA {
@Test
public void fun(){
System.out.println("Test ----->A");
}
}
import org.junit.Test;

/**
* Created by Administration on 2016/6/4.
*/
public class TestB {
@Test
public void fun(){
System.out.println("Test ----->B");
}
}
//RunWith表示这个类是一个suite的类
@RunWith(Suite.class)
//说明这个类中包含哪些测试组件

@Suite.SuiteClasses({
TestA.class,
TestB.class
})
public class TestSuit {
}

测试结果:

Test ----->A

Test ----->B
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: