1.实验名称——JUnit单元测试
2.实验目的
(1)利用Junit进行单元测试,理解单元测试的任务、同时理解这类测试工具的实现原理;
(2)理解断言的基本概念和断言测试方法;
3.实验内容
题目1:完成课件中Score_List的单元测试。
题目2:这是一个简单的计算器类——Computer,能够实现两个整数的加、减、乘、除运算(具体代码见附录C),请利用Junit进行单元测试。
4.实验过程
题目1:完成课件中Score_List的单元测试:从分数表中查找最大值。
Score_List.java
packageScore;publicclassScore_List{publicstaticintmaximum(int[] list){int index;int max =Integer.MIN_VALUE;if(list.length ==0){thrownewRuntimeException("空表");}for(index =0; index<=list.length-1; index++){if(list[index]>max) max = list[index];}return max;}}
Score_ListTest.java
packageScore;importjunit.framework.TestCase;importjunit.framework.TestSuite;publicclassScore_ListTestextendsTestCase{publicScore_ListTest(String testName){super(testName);}//测试表中有3个分数publicvoidtestOne(){int[] list =newint[3];
list[0]=7;
list[1]=9;
list[2]=8;int expResult =9;int result =Score_List.maximum(list);assertEquals(expResult, result);}//测试表中有1个分数publicvoidtestTwo(){int[] list =newint[1];
list[0]=9;int expResult =9;int result =Score_List.maximum(list);assertEquals(expResult, result);}//测试表为空的情况publicvoidtestThree(){try{Score_List.maximum(newint[]{});fail("这里应抛出而没有抛出异常");}catch(RuntimeException e){assertTrue(true);}}publicstaticTestSuitesuite(){TestSuite suite=newTestSuite();
suite.addTest(newScore_ListTest("testOne"));
suite.addTest(newScore_ListTest("testTwo"));
suite.addTest(newScore_ListTest("testThree"));return suite;}}
运行截图:
题目2:这是一个简单的计算器类——Computer,能够实现两个整数的加、减、乘、除运算(具体代码见附录C),请利用Junit进行单元测试。
Computer.java
packagetest;publicclassComputer{privateint a;privateint b;publicComputer(int x,int y){
a=x;
b=y;}publicintadd(){return a+b;}publicintminus(){return a-b;}publicintmultiply(){return a*b;}publicintdivide(){if(b!=0)return a/b;elsereturn0;}}
ComputerTest.java
packagetest;importjunit.framework.TestCase;importjunit.framework.TestSuite;publicclassComputerTestextendsTestCase{Computer a;publicComputerTest(String testName){super(testName);}protectedvoidsetup(){
a=newComputer(1,2);}publicvoidtestAdd(){setup();int expResult =3;int result = a.add();assertEquals(expResult, result);}publicvoidtestMinus(){setup();int expResult =-1;int result = a.minus();assertEquals(expResult, result);}publicvoidtestMultiply(){setup();int expResult =2;int result = a.multiply();assertEquals(expResult, result);}publicvoidtestDivide(){setup();int expResult =0;int result = a.divide();assertEquals(expResult, result);}publicstaticTestSuitesuite(){TestSuite suite=newTestSuite();
suite.addTest(newComputerTest("testAdd"));
suite.addTest(newComputerTest("testMinus"));
suite.addTest(newComputerTest("testMultiply"));
suite.addTest(newComputerTest("testDivide"));return suite;}}
5.实验心得
通过本次实验,我学会了利用Junit进行单元测试,理解了单元测试的任务和这类测试工具的实现原理,并且理解了断言的基本概念和断言测试方法。
附录:Computer类源代码
publicclassComputer{privateint a;privateint b;publicComputer(int x,int y){ a=x;
b=y;}publicintadd(){return a+b;}publicintminus(){return a-b;}publicintmultiply(){return a*b;}publicintdivide(){if(b!=0)return a/b;elsereturn0;}}
版权归原作者 尘埃的塵 所有, 如有侵权,请联系我们删除。