JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest
2013-04-07 21:43
549 查看
测试套件
如果测试类写到很多,每次要进行测试,难道要重新点击每一个测试类来运行?如果有200个测试类要测试呢?为了解决这个问题,引入了测试套件(TestSuite)。
通过将多个测试放入套件中,一并执行多个测试。
实例:一次运行多个测试类
比如,有两个测试类,叫CalculatorTest和CalculatorTest2。在测试类所在的包中新建一个类,叫做TestAll,如下:
package com.mengdd.junit; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { public static Test suite() { // 创建一个测试套件 TestSuite suite = new TestSuite(); // 增加测试类的class对象 suite.addTestSuite(CalculatorTest.class); suite.addTestSuite(CalculatorTest2.class); return suite; } }
运行时,右键这个类,Run As ->JUnit Test:
CalculatorTest
package com.mengdd.junit; import junit.framework.Assert; import junit.framework.TestCase; public class CalculatorTest extends TestCase { private Calculator calculator = null; public CalculatorTest() { super(); } public CalculatorTest(String name) { super(name); } @Override public void setUp() throws Exception { System.out.println("set up"); // 生成成员变量的实例 calculator = new Calculator(); System.out.println(calculator); } @Override public void tearDown() throws Exception { System.out.println("tear down"); } public void testAdd() { int result = calculator.add(1, 2); // 判断方法的返回结果 Assert.assertEquals(3, result);// 第一个参数是期望值,第二个参数是要验证的值 } public void testSubtract() { int result = calculator.subtract(1, 2); // 判断方法的返回结果 Assert.assertEquals(-1, result);// 第一个参数是期望值,第二个参数是要验证的值 } public void testMultiply() { int result = calculator.multiply(2, 3); // 判断方法的返回结果 Assert.assertEquals(6, result);// 第一个参数是期望值,第二个参数是要验证的值 } public void testDivide() { int result = 0; try { result = calculator.divide(12, 3); } catch (Exception e) { e.printStackTrace(); // 如果抛出异常,证明测试失败,没有通过,没通过的测试计数在Failures中 Assert.fail(); // 如果不加这一行,如果程序进入到catch,无法判断其失败 } // 判断方法的返回结果 Assert.assertEquals(4, result);// 第一个参数是期望值,第二个参数是要验证的值 } public void testDivideByZero() { Throwable tx = null; int result = 0; try { result = calculator.divide(12, 0); Assert.fail("没有抛出异常,测试失败");// 如果执行到这行代码,则证明没有抛出异常,说明我们的验证失败 } catch (Exception e) { e.printStackTrace(); tx = e; } Assert.assertEquals(Exception.class, tx.getClass());// 抛出的异常类型是否和期望一致 Assert.assertEquals("除数不能为0", tx.getMessage());// 抛出的异常信息是否和期望一致 //如果上面两个都通过,则测试通过 } }
测试套件类:
package com.mengdd.junit; import junit.extensions.RepeatedTest; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { public static Test suite() { // 创建一个测试套件 TestSuite suite = new TestSuite(); // 增加测试类的class对象 suite.addTestSuite(CalculatorTest.class); suite.addTestSuite(CalculatorTest2.class); // 测试某个方法多次,注意测试类需要提供带参数的构造方法 suite.addTest(new RepeatedTest(new CalculatorTest("testSubtract"), 20)); return suite; } }
运行结果:
参考资料
圣思园张龙老师视频教程相关文章推荐
- junit 如何一次对全部测试类进行测试
- 解决 使用了maven的项目中,进行Junit测试时的 java.lang.NoClassDefFoundError
- 使用Junit4对web项目进行测试(一)Junit初配置
- 解决使用robot framework + selenium测试时,RIDE运行一次后不显示log的问题
- 使用console进行 性能测试 和 计算代码运行时间
- 使用Eclipse对JUnit测试函数进行Debug时断点无效问题
- junit 测试spring-test 代码!在项目中运行测试通过,留着以后直接使用
- JUnit单元测试入门(四)--JUnit运行测试套件
- 使用 JUnit 进行容器内测试(常用的两种测试方法)
- [转]使用JUnit4与JMockit进行打桩测试
- 使用JMeter进行一次简单的带json数据的post请求测试,json可配置参数
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
- [Android学习笔记]使用Android Junit进行测试的注意事项
- 使用Ant进行Junit测试
- Junit框架使用(6)-- 测试套件与Maven测试
- android 之sqlite 使用及实现增、删、改、查 并使用AndroidTestCase 进行junit 测试
- 使用console进行性能测试和计算代码运行时间
- 使用ant进行junit测试
- Hibernate使用JUnit进行测试
- 使用Ant与Junit进行自动化测试