Junit 一次运行多个测试类和进行多次重复测试Word下载.docx
《Junit 一次运行多个测试类和进行多次重复测试Word下载.docx》由会员分享,可在线阅读,更多相关《Junit 一次运行多个测试类和进行多次重复测试Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
比如,有两个测试类,叫CalculatorTest和CalculatorTest2。
在测试类所在的包中新建一个类,叫做TestAll,如下:
packagecom.mengdd.junit;
importjunit.framework.Test;
importjunit.framework.TestCase;
importjunit.framework.TestSuite;
publicclassTestAllextendsTestCase
{
publicstaticTestsuite()
{
//创建一个测试套件
TestSuitesuite=newTestSuite();
//增加测试类的class对象
suite.addTestSuite(CalculatorTest.class);
suite.addTestSuite(CalculatorTest2.class);
returnsuite;
}
}
运行时,右键这个类,RunAs->
JUnitTest:
就相当于运行了CalculatorTest和CalculatorTest2。
进行方法的重复测试
如果要对某个方法进行多次测试,可以使用RepeatedTest。
使用时注意,测试类需要一个带参数(String)的构造函数,将String参数传给基类TestCase,调用基类的带参数的构造函数。
于是修改之前的代码如下:
被测试类不变:
Calculator
publicclassCalculator
publicintadd(inta,intb)
returna+b;
publicintsubtract(inta,intb)
returna-b;
publicintmultiply(inta,intb)
returna*b;
publicintdivide(inta,intb)throwsException
if(0==b)
thrownewException("
除数不能为0"
);
returna/b;
测试类:
CalculatorTest
importjunit.framework.Assert;
publicclassCalculatorTestextendsTestCase
privateCalculatorcalculator=null;
publicCalculatorTest()
super();
publicCalculatorTest(Stringname)
super(name);
@Override
publicvoidsetUp()throwsException
System.out.println("
setup"
//生成成员变量的实例
calculator=newCalculator();
System.out.println(calculator);
publicvoidtearDown()throwsException
teardown"
publicvoidtestAdd()
intresult=calculator.add(1,2);
//判断方法的返回结果
Assert.assertEquals(3,result);
//第一个参数是期望值,第二个参数是要验证的值
publicvoidtestSubtract()
intresult=calculator.subtract(1,2);
Assert.assertEquals(-1,result);
publicvoidtestMultiply()
intresult=calculator.multiply(2,3);
Assert.assertEquals(6,result);
publicvoidtestDivide()
intresult=0;
try
result=calculator.divide(12,3);
catch(Exceptione)
e.printStackTrace();
//如果抛出异常,证明测试失败,没有通过,没通过的测试计数在Failures中
Assert.fail();
//如果不加这一行,如果程序进入到catch,无法判断其失败
Assert.assertEquals(4,result);
publicvoidtestDivideByZero()
Throwabletx=null;
result=calculator.divide(12,0);
Assert.fail("
没有抛出异常,测试失败"
//如果执行到这行代码,则证明没有抛出异常,说明我们的验证失败
tx=e;
Assert.assertEquals(Exception.class,tx.getClass());
//抛出的异常类型是否和期望一致
Assert.assertEquals("
tx.getMessage());
//抛出的异常信息是否和期望一致
//如果上面两个都通过,则测试通过
测试套件类:
importjunit.extensions.RepeatedTest;
publicstaticTestsuite()
//测试某个方法多次,注意测试类需要提供带参数的构造方法
suite.addTest(newRepeatedTest(newCalculatorTest("
testSubtract"
),20));
运行结果: