JUnit小整理

    JUnit是java单元测试工具。

    一、在项目中构建单元测试的一些规则:‘

        1.新建一个源代码目录来存放我们的测试代码,通常命名为:test

        2.测试类的包应该和测试类保持一致。

        3.测试单元中的每个方法必须可以单独测试,测试方法不能有任何的依赖。

        4.测试方法必须使用public void 经行修饰,不能带任何的参数。

        5.测试方法使用test作为方法的前缀。【不是必须的】

        6.测试类使用Test类作为类名的后缀。【不是必须的】

        注意:[eclipse]通常可以直接在测试类上面,单击右键来创建一个JUnitl测试类,eclipse会自动生成与测试类相对应             的包名。测试方法等以上规则)

    二、对于JUnit的测试结果说明

        1.Failure一般由单元测试使用的断言方法判断失败所引起的,这表示测试点发现了问题,那程序输出的结果和我们预期的结果不一样造成。

        2.error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。

        3.测试用例是用来证明你没有错,而不是用来证明你是对的。

    三、@Test属性

        1.@Test(expected = XX.class) 捕获异常。如果程序捕获达到相对应的XX.class异常,那么程序也表示成功。如果出             现其他异常,则会报错。

        2.@Test(timeout = 毫秒)测试代码块的运行时间。当到达该时间时,如果程序还没执行完成,那么程序也将退出。

    四、测试套测 @RunWith(XX.class)

        1.测试套件就是组织测试类一起运行的入口类。

            a).写一个作为测试套件的入口类,这个类里面不包含其他的方法。

            b).更改测试运行器XX.class.

            c).将要测试的类作为数组传入到 @Suite.SuiteClasses({test1.class,test2.class.....  }),

@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class})
public class SuiteTest {
    //不可以包含其他方法
}

   五、JUnit中的参数化设置

        1.更改默认的测试运行器为@RunWith(XX.class)

        2.声明变量来保存预期值和结果值。

        3.声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰。

        4.为测试类声明一个带参数的公共构造函数并在其中为声明变量赋值。

import static org.junit.Assert.*;

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;

import com.sun.org.glassfish.gmbal.ParameterNames;

/** 
* @author 作者 E-mail: [email protected]
* @version 创建时间:2015年12月1日 下午9:31:47 
* 对于最上面的import static 静态导入,这个和平时的import导入的区别在于,前者导入以后,在当前类下不用再使用类名调用,直接调用导入类的静态方法就行,而后者这需要通过导入类的类名来调用静态方法。 
*/
@RunWith(Parameterized.class)
public class ParameterTest {

	int expected = 0;
	int input1 = 0;
	int input2 = 0;
	
	@Parameters
	public static Collection<Object[]> t(){
		return Arrays.asList(new Object[][]{
			{6,1,5},
			{5,2,3}
		});
	}
	
	public ParameterTest(int expected, int input1, int input2) {
		super();
		this.expected = expected;
		this.input1 = input1;
		this.input2 = input2;
	}

	@Test
	public void test() {
		assertEquals(expected,new Calculate().add(input1, input2));
	}

}



你可能感兴趣的:(JUnit小整理)