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)); } }