Junit4测试总结_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Junit4测试总结

Junit4测试总结

 2015/4/15 0:28:04  jisonami  程序员俱乐部  我要评论(0)
  • 摘要:Junit4的注解有如下8个:1.@BeforeClass测试类最开始执行的方法,并且只执行一次2.@AfterClass测试类最后执行的方法,并且只执行一次3.@Before每个测试方法都会在执行之前调用一次的方法4.@After每个测试方法都会在执行之后调用一次的方法以上四个注解修饰的方法均需要抛出Exception异常5.@Ignore暂时不执行的测试,下面这个方法在测试类执行时不会被调用6.@Test普通测试7.@Test(timeout=long)超时测试8.@Test
  • 标签:总结 测试
Junit4的注解有如下8个:
1.@BeforeClass 测试类最开始执行的方法,并且只执行一次
2.@AfterClass 测试类最后执行的方法,并且只执行一次
3.@Before 每个测试方法都会在执行之前调用一次的方法
4.@After 每个测试方法都会在执行之后调用一次的方法
    以上四个注解修饰的方法均需要抛出Exception异常
5.@Ignore 暂时不执行的测试,下面这个方法在测试类执行时不会被调用
6.@Test 普通测试
7.@Test(timeout=long) 超时测试
8.@Test(expected=Exception) 预期异常的测试,该注解修饰的方法抛出预期的异常则为正确的,反之则会报Errors

断言方法:junit4提供了多个方法名为assertEquals的重载方法,查api即可。

下面提供示例程序:

被测试的类为Main,测试类为MainTest
class="java" name="code">
package com.jison;

/**
 * 被测试的类
 * @author jison
 *
 */
public class Main {
	
	/**
	 * 计算n的阶乘
	 * @param n
	 * @return
	 */
	public int factorial(int n){
		int factorialNum = 1;
		for (int i = 1; i < n+1; i++) {
			factorialNum = factorialNum * i;
		}
		return factorialNum;
	}
	
	/**
	 * 计算n的阶乘
	 * @param n
	 * @param type 值为false时让程序报空指针
	 * @return
	 * @throws Exception 
	 */
	public int factorial(int n, boolean type) throws NullPointerException{
		if(!type){
			throw new NullPointerException(){};
		}
		return factorial(n);
	}
}



package junit4;

import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.jison.Main;

/**
 * 测试类
 * @author jison
 *
 */
public class MainTest {

	/**
	 * 测试类最开始执行的方法,并且只执行一次
	 * @throws Exception
	 */
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		System.out.println("setUpbeforeClass");
	}

	/**
	 * 测试类最后执行的方法,并且只执行一次
	 * @throws Exception
	 */
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		System.out.println("tearDownAfterClass");
	}

	/**
	 * 每个测试方法都会在执行之前调用一次的方法
	 */
	@Before
	public void setUp() throws Exception {
		System.out.println("setUp");
	}

	/**
	 * 每个测试方法都会在执行之后调用一次的方法
	 * @throws Exception
	 */
	@After
	public void tearDown() throws Exception {
		System.out.println("tearDown");
	}

	/**
	 * 普通测试
	 */
	@Test
	public void testFactorial() {
		// 断言方法
		assertEquals(120, new Main().factorial(5));
	}
	
	/**
	 * 超时测试
	 * 会报Errors
	 */
	@Test(timeout=1)
	public void testFactorial2(){
		// 通过循环Long类型的最大值模拟超时的程序
		for (int i = 0; i < Long.MAX_VALUE; i++) {}
		assertEquals(3628800, new Main().factorial(10));
	}

	/**
	 * 测试到预期的异常
	 */
	@Test(expected=NullPointerException.class)
	public void testFactorial3() throws NullPointerException{
		// 参数true不报异常,false报异常
		assertEquals(120, new Main().factorial(5, false));
	}
	/**
	 * 没有测试到预期的异常,报Failures
	 */
	@Test(expected=NullPointerException.class)
	public void testFactorial31() throws NullPointerException{
		// 参数true不报异常,false报异常
		assertEquals(120, new Main().factorial(5, true));
	}
	/**
	 * 本应该通过测试到预期的异常,但是catch处理后则报Failures
	 */
	@Test(expected=NullPointerException.class)
	public void testFactorial32(){
		// 参数true不报异常,false报异常
		try{
			assertEquals(120, new Main().factorial(5, false));
		} catch(NullPointerException e){
			System.out.println("以下是预期的异常信息:");
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 暂时不执行的测试
	 * 下面这个方法在测试类执行时不会被调用
	 */
	@Ignore
	public void testFactorial4(){
		System.out.println("Ignore");
	}
}

  • Junit4Demo.zip (7.2 KB)
  • 下载次数: 0
发表评论
用户名: 匿名