您的位置:首页 > 其它

[Test]Junit 4初级指南

2011-12-22 14:01 561 查看
我的独立blog, 原文链接:http://www.wangyuxiong.com/archives/51476

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


1. 环境搭建

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



2. 使用JUnit


2.1 新建一个工程”FirstSample”.






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

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






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;

}

}





2.4 新建一个测试类

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





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

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






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. 如下所示:





运行的结果如下图所示:






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

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

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





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

AnnotationDescription
@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

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