谁有马和人做的网站,学校网站的建设费用,深圳自适应网站制作,百中搜优化软件测试套件 如果测试类写到很多#xff0c;每次要进行测试#xff0c;难道要重新点击每一个测试类来运行#xff1f;如果有200个测试类要测试呢#xff1f; 为了解决这个问题#xff0c;引入了测试套件#xff08;TestSuite#xff09;。 通过将多个测试放入套件中#x…测试套件 如果测试类写到很多每次要进行测试难道要重新点击每一个测试类来运行如果有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和CalculatorTest2。 实例进行方法的重复测试 如果要对某个方法进行多次测试可以使用RepeatedTest。 使用时注意测试类需要一个带参数String的构造函数将String参数传给基类TestCase调用基类的带参数的构造函数。 于是修改之前的代码如下 被测试类不变 Calculator package com.mengdd.junit;public class Calculator
{public int add(int a, int b){return a b;}public int subtract(int a, int b){return a - b;}public int multiply(int a, int b){return a * b;}public int divide(int a, int b) throws Exception{if(0 b){throw new Exception(除数不能为0); }return a / b;}
} 测试类 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);}Overridepublic void setUp() throws Exception{System.out.println(set up);// 生成成员变量的实例calculator new Calculator();System.out.println(calculator);}Overridepublic 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;}
} 运行结果 参考资料 圣思园张龙老师视频教程转载于:https://www.cnblogs.com/mengdd/archive/2013/04/07/3006265.html