[Test]Junit 4初级指南

十二 22nd, 2011

Junit是什么我觉得没有必要再说了,这里只是简单介绍一下我们的使用的场景,算是简单入门级的东西,所以,已经使用过或者了解过,可以移步啦!

 

1. 环境搭建

 

1.1 从https://github.com/KentBeck/junit/downloads 上下载你需要的junit,目前版本已经到4.10,我这里选择最新版下载,顺便了解一下annotations 。

 

2. 使用JUnit

 

2.1 新建一个工程”FirstSample”.

image

 

2.2 将测试类和被测对象分离

右键你的工程名,点击属性,弹出属性对话框,找到Java Build Path。选择source tab栏,最后点击Add Folder,建一个test的文件夹。

image

 

2.3  新建一个java类

在src文件夹下,新建一个com.lifeware.sample的包和下面的类:

packagecom.lifeware.sample;public class Operator {

     public int add(int a,int b){

           return a+b;

}

     public int multiply(int a,int b){

          return a/b;

}

}

image

 

2.4  新建一个测试类

右键你刚刚新建的class,弹出的菜单中选择新建一个测试类,需要将测试类的存放位置改为test folder。

image

点击”Next”,就可以选择需要对那些方法进行测试。

如果junit并不在的你的classpath中,则会弹出这样的对话框,确定即可:

image

 

2.5 编写测试代码

package com.lifeware.sample;
import static org.junit.Assert.*;
import org.junit.Test;

public
class OperatorTest {
@Test
public void testAdd() {
Operator op = new Operator();
        assertEquals(3,op.add(1, 2));
}@Test
public void testMultiply() {
Operator op = new Operator();
        assertEquals(2,op.multiply(10, 5));
}

}

2.6 在Eclipse下运行你的测试案例

右键你刚写好的测试类,依次点击: Run As—> Junit Test. 如下所示:

image

运行的结果如下图所示:

image

2.7 对多个tests进行合并的方法

假设有多个test class需要进行测试,那么我们可以将一些class放到一个suite进行管理,所以,我们先创建一个suite:

右键这些 test classes: New → Other → JUnit → Test Suite, 如下图所示.

image

Next下去,选择你需要合并的test 。在新建的一个AllTests类的suite里,代码如下:

package com.lifeware.sample;
import org.junit.runners.Suite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses( { OperatorTest.class })
public class AllTests {

}

2.8  用代码来运行tests

除了向刚才那样在eclipse下运行我们的test case之外,我们也可以通过写执行代码来运行我们的cases。

org.junit.runner.JUnitCore 提供了一个runClasses()的方法,这个方法可以让我们运行我们的cases。

在test folder下新建一个类,MyTestRunner,代码如下:

package com.lifeware.sample;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public
class MyTestRunner {
/**
* @param args
*/
public static void main(String[] args) {
Result result = JUnitCore.runClasses(OperatorTest.class);
        for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}

运行该程序,我们可以在控制台下看到失败cases的错误信息。

 

3. 更多Junit的特性

3.1 Annotations

Annotation Description
@Test
public void method()
该方法为test方法
@Before
public void method()
在每个test之前执行的方法,一般用于初始化环境
@After
public void method()
在每个test之后执行的方法,一般用于清理环境
@BeforeClass
public void method()
执行一次,所有方法之前执行
@AfterClass
public void method()
执行一次,所有方法之后执行
@Ignore
public void method()
忽略该test方法
@Test(expected=IllegalArgumentException.class)
public void method()
如果没有抛出异常,则fail
@Test(timeout=100) 如果超时,则fails

3.2 Assert statements

statements Description
fail(String)
assertTrue(true) / assertTrue(false)
assertsEquals([String [message], expected, actual) 验证是否相等
assertsEquals([String [message],
expected, actual, tolerance)
验证在允许的范围内,2值是否相等
assertNull([message], object) 验证object是否为null
assertNotNull([message], object) 验证object是否为null
assertSame([String], expected, actual) 验证2值的object是否相同
assertNotSame([String], expected, actual) 验证2值的object是否相同
assertTrue([message], boolean condition) 验证condition是否为true




除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51476

订阅本站:http://www.wangyuxiong.com/feed

分类: 测试技术         标签: , ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量