`

在Eclipse中使用JUnit

阅读更多

一. 快速入门

1. 在工程中引入junit.jar

   

2. 建立test class,继承自junit.framework.TestCase

    如, 在工程的标题上点击右键,选择New->JUnit Test Case, 输入要创建的测试类名TestClass

 

import junit.framework.TestCase; 

public class TestClass extends TestCase { ... }

 

3. 在test class中,定义一些以“test”开头的无返回(void)方法

    如, 可以使用assertEquals() 等断言方法

import junit.framework.TestCase; 

public class TestClass extends TestCase { 
	public void testSay(){
		HelloWorld hi = new HelloWorld();
		assertEquals("Hello World!", hi.say());
	}

}

 

4. 运行测试, junit.textui.TestRunner.run(testClassName.class);

    如, 在main()方法中输入上面的junit.textui.TestRunner.run(TestClass.class); 然后点击Run->Run As->JUnit Test

import junit.framework.TestCase; 

public class TestClass extends TestCase { 
	public void testSay(){
		HelloWorld hi = new HelloWorld();
		assertEquals("Hello World!", hi.say());
	}
	
	public static void main(String[] args) {
		junit.textui.TestRunner.run(TestClass.class);
	}
} 

 

二. 进阶-使用JUnit 4

1. JUnit最基本的5个点:
    1) 由于JUnit4.1是基于JDK1.5开发的,因此它集成了JDK1.5版本的许多特性。其中之一就是一改过去需要扩展TestCase基类以及测试方法必须以“test”开头的约束,而使用annotation标记来标识哪些方法需要测试。每个测试用例类至少有一个方法被“@Test”标记,否则在使用JUnit引擎运行时会抛出一个没有测试方法的异常;


    2) 一个测试类就是一个普通的Java类,在形式上没有任何特殊的地方。一般地,我们为了方便区分测试类与源码类,人为地在类名上加上“Test”字样;


    3) 构造一些测试对象(new出一些目标测试对象);


    4) 执行目标测试对象的目标方法;


    5) 调用JUnit提供的验证方法来测试行为的结果,这里调用的是assertEquals方法。这些验证方法是org.junit.Assert类提供的静态方法,所以我们这里使用静态导入功能导入了Assert类。JUnit还提供了很多其他的验证方法(如强制测试失败的fail方法),可以在它的Javadoc文档中找到。

 

2. 典型的annotation

    1) @Test标签用来标注待测试的方法,按照类中声明的顺序执行;

        @Ignore标签告诉Junit4忽略它所标注的方法;

 

    2) 预设环境

        @BeforeClass标签注释的方法用于在整个类测试过程的初始化后调用一次;

        @AfterClass标签注释的方法则是整个测试类结束之前调用一次;

        @Before标签注释的方法在每个测试方法执行前调用;

        @After标签注释的方法在每个测试方法执行后调用;

 

    3) 限时测试

        如,@Test(timeout=1000)

 

    4) 测试套件由下面3个要素组成

        i.   @RunWith: 此注解告诉JUnit使用org.junit.runner.Suite的运行器;

             (测试运行器: 每个类拥有一个运行器,如果没有指定@RunWith,那么你的测试类会使用一个默认的运行器org.junit.internal.runners.TestClassRunner来执行测试)

        ii.  @SuiteClasses: 将需要测试的类名加到@SuiteClasses中;

        iii. 声明一个空类.

 

    5) 参数化测试 (初学者可以先不看这项)

        把一组组的测试数据集中放在一个集合中,这个集合作为测试类的参数,进行集中测试,避免为每一组测试数据写一个测试方法.

        

package com.webex.hill.study;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class MathParameterizedTest {
	int faciend;
	int multiplicator;
	int result;

	public MathParameterizedTest(int faciend, int multiplicator, int result) {
		 this.faciend = faciend;
		 this.multiplicator = multiplicator;
		 this.result = result;
	}


	@Parameters
	public static Collection multipleValues() {
	 return Arrays.asList(new Object[][] {
	  {3, 2, 6 },
	  {4, 3, 12 },
	  {5, 7, 35 },
	  {6, 7, 42 },
	  {11, 7, 77 },
	  {25, 4, 100 },
	  {34, 3, 102 },
	  {21, 5, 105 },
	  {11, 22, 242 },
	  {8, 9, 72 }});
	}
	
	@Test
	public void testMultiple() {
		System.out.println("In testing 3 ...............");
		
		assertEquals(result,Math.multiple(faciend,multiplicator));
	}
}

 

   

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics