浏览 6244 次
锁定老帖子 主题:Junit 4.0 学习笔记
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-10
最后修改:2009-06-11
主程序 public class Compalbe { public int add(int a,int b){ return a+b; } public int div(int a,int b) throws Exception{ return a/b; } } 测试程序 测试方法在junit4.x中必顺是public void ,但测试方法不做要求,不像3.8一样以test开头.类也不用继承TestCase 1.简单测试 public class TestCompalbe { @Test public void testAdd(){ Compalbe com = new Compalbe(); int result = com.add(2, 2); Assert.assertEquals(3, result); } @Test public void testDiv() throws Exception{ Compalbe com = new Compalbe(); int result = com.div(2, 2); Assert.assertEquals(1,result); } } 2.指定异常 public class TestCompalbe { //指定异常 @Test(expected=Exception.class) public void testDiv() throws Exception{ Compalbe com = new Compalbe(); //除数为0异常 int result = com.div(2, 0); Assert.assertEquals(1,result); } } 3.指定程序运行的延时 @Test(timeout=100)//如果超去这个时间则不通过 public void testDiv() throws Exception{ Compalbe com = new Compalbe(); int result = com.div(2, 2); Thread.sleep(20); Assert.assertEquals(1,result); } 4.@Before,@After public class TestCompalbe { Compalbe com = null; //@Before作用初始化测试方法相关资源 @Before public void init() { System.out.println("init"); com = new Compalbe(); } //@After作用销毁测试方法相关资源 @After public void destory() { System.out.println("destorys"); com = null; } @Test public void testAdd() { int result = com.add(2, 2); Assert.assertEquals(4, result); } @Test public void testDiv() throws Exception { int result = com.div(2, 2); Assert.assertEquals(1, result); } } 注init,destory分别会执行两次,有多少个测试方法就会分别执行多少次 5 @BeforeClass,@AfterClass public class TestCompalbe { static Compalbe com = null; //@BeforeClass作用初始化测试方法相关资源(如:jdbc Connection) @BeforeClass public static void init() { System.out.println("init"); com = new Compalbe(); } //@AfterClass作用销毁测试方法相关资源 @AfterClass public static void destory() { System.out.println("destorys"); com = null; } @Test public void testAdd() { int result = com.add(2, 2); Assert.assertEquals(4, result); } @Test public void testDiv() throws Exception { int result = com.div(2, 2); Assert.assertEquals(1, result); } }注init,destory分别都只会执行一次,有多少个测试方法都只会分别执行一次 6 @Ignore @Test //测试程序将忽略些方法 @Ignore public void testDiv() throws Exception { int result = com.div(2, 2); Assert.assertEquals(1, result); } 7@Suite (批量测试) 新增主程序 public class Compalbe2 { public int sub(int a,int b){ return a-b; } public int mul(int a,int b){ return a*b; } } 新增测试程序 public class TestCompable2 { Compalbe2 com = null; @Before public void init() { com = new Compalbe2(); } @After public void destory() { } @Test public void testMul() { int result = com.mul(3, 4); Assert.assertEquals(12, result); } @Test public void testSub() { int result = com.sub(3, 4); Assert.assertEquals(-1, result); } } 使用批量测试 @RunWith(Suite.class) @Suite.SuiteClasses({TestCompalbe.class,TestCompable2.class}) public class SuitTest { } junit 将同时执行TestCompalbe,TestCompable2中的全部测试方法 同时SuitTest 还可以包括在其他的批量测试程序中 如@Suite.SuiteClasses({SuitTest1.class,SuitTest2.class})这样就可以方便去测试包,和JAR的测试程序. @RunWith(Suite.class) 表示利用那种运行器,同时还可以自定义运行器超类(org.junit.runner.Runner) 8 私有方法测试 可以使用类的反射机制去加载Class,再获取方法.再去测试这个方法 9 组合查询 测试程序 //确认运行器 @RunWith(Parameterized.class) public class ParameterizedTest { private int result; private int input1; private int input2; private Compalbe com = null; @Before public void init(){ com = new Compalbe(); } //准备参数 //方法为 public static ,返回类型为Collection @Parameters public static Collection<Object[]> data() { //参数列表为二维数组,参数的位置为构造函数对应 //如{3,2,1},{3是结果对应result参数,2对应input1,1对应input2 Object[][] objarr = new Object[][]{{3,2,1},{4,2,2},{-1,-1,0}}; return Arrays.asList(objarr); } public ParameterizedTest(int result,int input1,int input2){ this.result = result; this.input1 = input1; this.input2 = input2; } //测试方法 @Test public void testAdd(){ Assert.assertEquals(result, com.add(input1, input2)); } } 以上程序将测试{3,2,1},{4,2,2},{-1,-1,0}三种情况 附件包括测试源代码 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |