JUnit的使用和常用注解

摘自:http://www.itzhai.com/junit-use-common-annotations.html

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

 下面说一下使用JUnit测试的好处:
对于极限编程而言

要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。

对于重构而言

其好处和极限编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗。

junit有断言功能,如果测试结果不通过会告诉我们那个测试不通过,为什么,而如果是想以前的一般做法是写一些测试代码看其输出结果,然后再由自己来判断结果使用正确,使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。

 JUnit常用注解:
@Before:初始化方法
@After:释放资源
@Test:测试方法,在这里可以测试期望异常和超时时间
@Ignore:忽略的测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
 JUnit4单元测试用例执行顺序:

@BeforeClass ==> @Before ==> @Test ==> @After ==> @AfterClass

 JUnit4单元测试方法执行顺序:

@Before ==> @Test ==> @After

 JUnit4单元测试实例:

import static org.junit.Assert.*;

import org.junit.After;

import org.junit.AfterClass;

import org.junit.Before;

import org.junit.BeforeClass;

import org.junit.Ignore;

import org.junit.Test;

 

public class JUnit4Test {

@Before

public void before() {

  System.out.println("@Before");

}

@Test

public void test() {

  System.out.println("@Test");

  assertEquals(5 + 5, 10);

}

 

@Ignore

@Test

public void testIgnore() {

  System.out.println("@Ignore");

}

 

@Test(timeout = 50)

public void testTimeout() {

  System.out.println("@Test(timeout = 50)");

  assertEquals(5 + 5, 10);

}

 

@Test(expected = ArithmeticException.class)

public void testExpected() {

  System.out.println("@Test(expected = Exception.class)");

  throw new ArithmeticException();

}

 

@After

public void after() {

   System.out.println("@After");

  }

  

  @BeforeClass

  public static void beforeClass() {

   System.out.println("@BeforeClass");

  };

  

  @AfterClass

  public static void afterClass() {

   System.out.println("@AfterClass");

  };

};

 

输出结果的顺序为:

@BeforeClass

@Before

@Test(timeout = 50)

@After

@Before

@Test(expected = Exception.class)

@After

@Before

@Test

@After

@AfterClass

猜你喜欢

转载自lbwahoo.iteye.com/blog/2096427
今日推荐