欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

搞定Java单元测试:Junit的使用指南

最编程 2024-08-05 18:22:41
...

Junit元测试

单元测试(junit testing),是指对软件中的最小可测试单元进行检查和验证。Java里单元指一个类。

JUnit ,是一个开源的Java单元测试框架,是 Java的标准单元测试库,是非常重要第三方 Java 库,由 Kent Beck 和 Erich Gamma 开发。

Junit作为一个软件测试的工具,JUnit可以不破坏java原代码,使用方便,添加快捷,代码量少,可视化的测试。

JUnit单元测试步骤:

1.导入包junit测试包:JUnit测试版本,3.81版,4.0版,导入对应的jar包;

2.写一个类扩展(继承)TestCase;
3.在需要测试的方法名前加test生成新的测试方法;
4.运行测试,用断言(assert***)的方法测试成功(显示绿色)或失败(显示红色),或者自己判断结果正确与否。

 Unit3.81与JUnit4.0区别:
1.在 JUnit 4 中,测试是由 @Test 注释来识别的;
2.Unit 3.81 测试运行程序时会在运行每个测试之前自动调用 setUp() 方法,在JUnit4.0中,要用 @Before 注释;
3.在 JUnit 3.81 中,测试运行程序时会在运行每个测试之前自动使用 tearDown() 方法清除消耗的资源,在JUnit4.0中,用 @After 注释。

注意:如果需测试的方法没有返回值,只能测试其过程。

 JUnit4新特性:
1.属于类范围的 setUp()方法 和 tearDown() 方法,任何用 @BeforeClass 注释的方法都将在该类中的测试方法运行之前运行一次,而任何用 @AfterClass 注释的方法都将在该类中的所有测试都运行之后运行一次;
2.异常测试:编写抛出异常的代码,并使用注释来声明该异常是预期的;
3.在需要高效率的测试中,有些代码测试你认为可以跳过,这类测试可以被注释为 @Ignore

4.时间测试可以用超时参数来注释,如果测试的运行时间超过指定的毫秒数,测试失败。 

5.增加两个新的断言方法:

(1)public static void assertEquals(Object[] expected, Object[] actual)
(2)public static void assertEquals(String message, Object[] expected, Object[] actual) 这两个方法用来比较数组:如果数组长度相等且对应的元素相同,则这两个数组相等,否则不等,也考虑了数组为空的情况。

junit类(Mul)单元测试:

package com.myhome;

public class Mul{
public int mul(int x,int y) {
    public int mul(int x,int y) {
        return x*y;
    }
    public double divide(double x,double y){
        return x/y;
    }
}

用myeclipse集成开发环境添加jar包和junit测试支持:

 

1.如果没有就在new菜单最下边Other……中(或Ctrl+N),输入junit选择JUnit Test Case单元测试:


2.选择JUnit 3 Test测试:


3.选择要测试的方法:


4.此时会自动导入jar包(junit3或者junit4需要的jar包),


5.程序目录结构:

6.此时的测试类为:

package com.myhome.test;

import junit.framework.TestCase;

public class MulTest extends TestCase {

    public void testMul() {
        fail("Not yet implemented");
    }

    public void testDivide() {
        fail("Not yet implemented");
    }

}

测试内部方法体:

    public void testMul() {
        Mul mul = new Mul();
        int res = mul.mul(2, 4);
        System.out.println(res);
    }

    public void testDivide() {
        Mul mul = new Mul();
        double res = mul.divide(8.0, 2.0);
        assertEquals(4.0, res);
    }

效果图: