Junit4单元测试

对于已经写好的单元,new-->junit test case

 

JUnit 4 常用的几个annotation 介绍

★ @Before:初始化方法,在任何一个测试执行之前必须执行的代码;

★ @After:释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰public void 方法;

★ @Test:测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那就要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如 @Test(timeout = 100):我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。

★ @Ignore:忽略的测试方法,标注的含义就是某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

★ @BeforeClass:针对所有测试,只执行一次,且必须为public static void;

★ @AfterClass:针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void;

所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After

 

 常用的断言介绍

 

1 assertEquals([String message],Object target,Object result)

 

targetresult不相等,中断测试方法,输出message

 

assertNull   断言对象为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。

 

assertEquals(a, b) 测试a是否等于bab是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)

 

assertEquals

 

断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError异常。

 

例如计算器加法功能的测试可以使用一下验证:

 

Assert.assertEquals(0,result)

 

2  assertTrue/False([String message],Boolean result)

 

Resultfalse/true,中断测试方法,输出message

 

assertTrue

 

断言条件为真,若不满足,方法抛出带有相应信息的AssertionFailedError异常。

 

assertFalse(a) 测试a是否为false(假),a是一个Boolean数值。

 

assertFalse

 

断言条件为假,若不满足,方法抛出带有相应信息的AssertionFailedError异常。

 

3  assertNotNull/Null[String message],Obejct result

 

Retult= = null/result!=null,中断测试方法,输出message

 

assertNotNull(a) 测试a是否非空,a是一个对象或者null

 

assertNotNull 断言对象不为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。

 

4  assertSame/NotSameObject target,Object result

 

Tragetresult 不指向/指向 同一内存地址(实例),中断测试方法,输出message

 

assertNotSame(a, b) 测试ab是否没有都引用同一个对象。

 

assertNotSame

 

断言两个引用指向不同对象,若不满足,方法抛出带有相应信息的AssertionFailedError异常。

 

assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError异常。

 

5  fail([String message])

 

中断测试方法,输出message

 

Fail  让测试失败,并给出指定信息

 

例子:

 

public class Calculate {

 

    private static int result;

 

    public void add(int n){

 

     result=result+n;

 

    }

 

    public void stract(int n){

 

     result=result-1;

 

    }

 

    public void multiply(int n){

 

     //此方法还未使用result=result*n;

 

    }

 

    public void divide(int n){

 

     result=result/n;

 

    }

 

    public void squre(int n){

 

     result=n*n;

 

    }

 

    public void squreRoot(int n){

 

     for (; ;);

 

    }

 

    public void clear(){

 

     result=0;

 

    }

 

    public int getresult(){

 

     return result;

 

    }

 

}

 

 

 

import static org.junit.Assert.*;

 

import org.junit.Before;

 

import org.junit.Ignore;

 

import org.junit.Test;

 

 

 

public class CalculateTest {

 

    

 

private static Calculate calculate=new Calculate();

 

@Before

 

public void setUp() throws Exception {

 

calculate.clear();

 

}

 

 

 

@Test

 

public void testAdd() {

 

calculate.add(2);

 

calculate.add(3);

 

assertEquals(5, calculate.getresult());

 

}

 

 

 

@Test

 

public void testStract() {

 

calculate.add(10);

 

calculate.stract(2);

 

assertEquals(8, calculate.getresult());

 

}

 

    @Ignore

 

@Test

 

public void testMultiply() {

 

fail("Not yet implemented");

 

}

 

 

 

@Test

 

public void testDivide() {

 

calculate.add(8);

 

calculate.divide(2);

 

assertEquals(4, calculate.getresult());

 

}

 

 

 

}

结果如下:

 

posted on 2017-02-10 11:23  daphnezhu  阅读(176)  评论(0编辑  收藏  举报