JUnit4使用
1、导入Junit4jar包: Eclipse中在项目上右键点击Bulid Path,然后再点击Add libraries,选择JUnit ? 2、初次使用 首先先创建一个java项目如下: Demo.java内容: package cn.orlion.demo; public class Demo { int method1(int p1,int p2){ return p1 + p2; } int method2(return p1 -int method3(return p1 * p2; } } 然后在src上点击右键添加一个source folder命名为test,在test下创建包cn.orlion.demo(包名要与要测试的包名一致),然在在此包右键new一个JUnit Test Case,命名为DemoTest。 写测试类时有一些规范需要遵守: (1)测试方法上必须使用@Test进行修饰(2)测试方法必须用public void修饰不能带参数(3)需要新建一个源代码目录来存放测试代码(4)测试类的包必须要与被测试类包名一致(5)测试单元中的每个方法必须可以独立测试,方法间不能存在依赖(6)测试类使用Test作为后缀(7)测试方法使用test作为前缀 代码如下所示: import static org.junit.Assert.*; import org.junit.Test; DemoTest { @Test void testMethod1(){ assertEquals(3,1)">new Demo().method1(2,1)); } @Test testMethod2(){ assertEquals(1,1)">new Demo().method2(2,1)"> testMethod3(){ assertEquals(2,1)">new Demo().method3(2,1)">)); } } 现在的项目结构如图所示 在DemoTest.java类右键点击Run As -> JUnit Test结果如下所示: (Failures一般是由测试方法中断言引起,这表示测试点出现了问题,证明被测试的方法返回的结果与我们预期的不一样 Errors一般是由被测试方法或者是测试方法中存在异常导致。) 状态条为绿色三个方法全部测试成功 ? 3、JUnit运行流程 (1)@BeforeClass修饰的方法会在所有方法执行前执行,该方法是静态的,所以当测试类被加载后就会运行它,在内存中只会存在一份,适合加载配置文件 (2)@AfterClass修饰符修饰的方法会在所有方法执行后执行,通常用来清理资源,比如关闭流 (3)@Before和@After会在每个测试方法执行前后各执行一次。 4、JUnit常用注解 (1)@Test @Test有个expected属性和timeout属性(@Test(expected=NullPointerException.class),@Test(timeout=1000)) expected属性可以捕获测试方法和被测试方法中预期抛出的异常,timeout限定方法执行的时间 (2)@Ignore @Ignore修饰的方法不会被执行,可以@Ignore("此方法被忽略")做一个注释:此方法被忽略 (3)@RunWith可以更改测试运行器org.junit.runner.Runner 5、测试套件 随着项目功能的逐渐完善我们的测试类也会越来越多,测试的时候不能一个一个的去执行,于是有了测试套件,也就是在一个入口类中包含若干个测试类,然后只要执行该入口类就可以执行其包含的若干个测试类 入口类必须是个空类,如下: import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) } 6、JUnit参数化设置 在测试中很多测试代码基本上差不多,所以可以采用参数化设置 static org.junit.Assert.assertEquals; java.util.Arrays; java.util.Collection; org.junit.Test; org.junit.runner.RunWith; org.junit.runners.Parameterized; org.junit.runners.Parameterized.Parameters; // 第一步:更改测试运行器 @RunWith(Parameterized.) ParameterTest { 第二步:声明变量来存放预期值与输入值 int expected = 0; int input1 = 0int input2 = 0; 第三步:声明一个返回值为Collection的公共静态方法,使用@Parameters修饰 @Parameters static Collection<Object[]>t(){ return Arrays.asList(new Object[][]{ {3,1,2},{1,2,{2,1)">} }); } 第四步:为测试类声明一个带参数的公共构造函数,并在其中为声明变量赋值 public ParameterTest(int expected,1)">int input1,1)"> input2){ this.expected = expected; this.input1 = input1; this.input2 = input2; } 第五步:进行测试 @Test testMethod1(){ assertEquals(expected, Demo().method1(input1,input2)); } } ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |