Junit 一次运行多个测试类和进行多次重复测试.docx
- 文档编号:6166770
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:7
- 大小:40.78KB
Junit 一次运行多个测试类和进行多次重复测试.docx
《Junit 一次运行多个测试类和进行多次重复测试.docx》由会员分享,可在线阅读,更多相关《Junit 一次运行多个测试类和进行多次重复测试.docx(7页珍藏版)》请在冰豆网上搜索。
Junit一次运行多个测试类和进行多次重复测试
JUnit3一次运行多个测试类和进行多次重复测试:
使用测试套件和RepeatedTest
测试套件
如果测试类写到很多,每次要进行测试,难道要重新点击每一个测试类来运行?
如果有200个测试类要测试呢?
为了解决这个问题,引入了测试套件(TestSuite)。
通过将多个测试放入套件中,一并执行多个测试。
实例:
一次运行多个测试类
比如,有两个测试类,叫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
packagecom.mengdd.junit;
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
packagecom.mengdd.junit;
importjunit.framework.Assert;
importjunit.framework.TestCase;
publicclassCalculatorTestextendsTestCase
{
privateCalculatorcalculator=null;
publicCalculatorTest()
{
super();
}
publicCalculatorTest(Stringname)
{
super(name);
}
@Override
publicvoidsetUp()throwsException
{
System.out.println("setup");
//生成成员变量的实例
calculator=newCalculator();
System.out.println(calculator);
}
@Override
publicvoidtearDown()throwsException
{
System.out.println("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;
intresult=0;
try
{
result=calculator.divide(12,0);
Assert.fail("没有抛出异常,测试失败");//如果执行到这行代码,则证明没有抛出异常,说明我们的验证失败
}
catch(Exceptione)
{
e.printStackTrace();
tx=e;
}
Assert.assertEquals(Exception.class,tx.getClass());//抛出的异常类型是否和期望一致
Assert.assertEquals("除数不能为0",tx.getMessage());//抛出的异常信息是否和期望一致
//如果上面两个都通过,则测试通过
}
}
测试套件类:
packagecom.mengdd.junit;
importjunit.extensions.RepeatedTest;
importjunit.framework.Test;
importjunit.framework.TestCase;
importjunit.framework.TestSuite;
publicclassTestAllextendsTestCase
{
publicstaticTestsuite()
{
//创建一个测试套件
TestSuitesuite=newTestSuite();
//增加测试类的class对象
suite.addTestSuite(CalculatorTest.class);
suite.addTestSuite(CalculatorTest2.class);
//测试某个方法多次,注意测试类需要提供带参数的构造方法
suite.addTest(newRepeatedTest(newCalculatorTest("testSubtract"),20));
returnsuite;
}
}
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Junit 一次运行多个测试类和进行多次重复测试 一次 运行 测试 进行 多次 重复
![提示](https://static.bdocx.com/images/bang_tan.gif)