Junit基础学习

来源:互联网 发布:淘宝上几十块的人参 编辑:程序博客网 时间:2024/05/20 20:57

导入包:junit.4.10jar, 不建议使用myEclipse自带的Junit.

1,在src中编写服务代码。

2,创建测试类,在myEclipse中创建sources folder(里面的.java文件在workplace中编译成.class文件),命名为test。

      创建测试类所在的包。包名和要被测试的类的包名一致。

3,Junit3与Junit4之间的区别

      3.1,如果某个类是测试类,这个类需要继承testCase。

      3.2,如果某个方法是测试方法,这个方法必须是以testXX()形式命名。

      3.3,如果某个测试方法运行前需要运行初始化方法,这个初始化方法必须命名为setUp(),运行某个测试方法之后如果需要运行一个释放资源的方法,这个方法必须命名为teardown().

      Junit4中,一个POJO类就是一个测试类,不需要继承testcase。测试方法以@test注释,初始化方法用@before,释放资源的方法是用@after。为了可以兼容junit,这些命名名称可以使用junit3的规则。


4,断言assert。


      导入类assert,import static org.junit.Assert.*(导入静态类,则该类中的方法可以不需要使用   类名.方法   使用了。可以方便兼容junit3)

      assert类中有一些基本方法。
      1.assertTrue/False([String message,]boolean condition);
          判断一个条件是true还是false。感觉这个最好用了,不用记下来那么多的方法名。
      2.fail([String message,]);
          失败,可以有消息,也可以没有消息。
      3.assertEquals([String message,]Object expected,Object actual);
          判断是否相等,可以指定输出错误信息。
          第一个参数是期望值,第二个参数是实际的值。
          这个方法对各个变量有多种实现。在JDK1.5中基本一样。
          但是需要主意的是float和double最后面多一个delta的值,可能是误差范围,不确定这个 单词什么意思,汗一个。
      4.assertNotNull/Null([String message,]Object obj);
         判读一个对象是否非空(非空)。
      5.assertSame/NotSame([String message,]Object expected,Object actual);
          判断两个对象是否指向同一个对象。看内存地址。
      6.failNotSame/failNotEquals(String message, Object expected, Object actual)
          当不指向同一个内存地址或者不相等的时候,输出错误信息。
          注意信息是必须的,而且这个输出是格式化过的。
5,hamcrest 
       导入包hamcrest-all-1.3.jar
       使用allof方法时,在buildPath中,让系统先读取hamcrest-all-1.3.jar,不然系统会使用junit中的allof方法。即将hamcrest的jar放在junit.jar 前面
       hamcrest可以有效增加junit的测试能力,用一些对通俗语言来进行测试.
       Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符定义的规则,程序员可以更加精确的表达自己的测试思想,
      指定所想设定的测试条件。比如,有时候定义的测试数据范围太精 确,往往是若干个固定的确定值,这时会导致测试非常脆弱,因为接下来的测试数据只要稍稍有变化,
       就可能导致测试失败(比如 assertEquals( x, 10 ); 只能判断 x 是否等于 10,如果 x 不等于 10, 测试失败);有时候指定的测试数据范围又不够太精确,
     这时有可能会造成某些本该会导致测试不通过的数据,仍然会通过接下来的测试,这样就会降低测试的价 值。 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 - 测试字符串匹配

0 0
原创粉丝点击