1.实验名称——JUnit单元测试
2.实验目的
(1)利用Junit进行单元测试,理解单元测试的任务、同时理解这类测试工具的实现原理;
(2)理解断言的基本概念和断言测试方法;
3.实验内容
题目1:完成课件中Score_List的单元测试。
题目2:这是一个简单的计算器类——Computer,能够实现两个整数的加、减、乘、除运算(具体代码见附录C),请利用Junit进行单元测试。
4.实验过程
题目1:完成课件中Score_List的单元测试:从分数表中查找最大值。
Score_List.java
package Score; public class Score_List { public static int maximum(int[] list) { int index; int max = Integer.MIN_VALUE; if(list.length == 0) { throw new RuntimeException("空表"); } for(index = 0; index<=list.length-1; index++) { if(list[index]>max) max = list[index]; } return max; } }
Score_ListTest.java
package Score; import junit.framework.TestCase; import junit.framework.TestSuite; public class Score_ListTest extends TestCase { public Score_ListTest(String testName) { super(testName); } //测试表中有3个分数 public void testOne() { int[] list = new int[3]; list[0] = 7; list[1] = 9; list[2] = 8; int expResult = 9; int result = Score_List.maximum(list); assertEquals(expResult, result); } //测试表中有1个分数 public void testTwo() { int[] list = new int[1]; list[0] = 9; int expResult = 9; int result = Score_List.maximum(list); assertEquals(expResult, result); } //测试表为空的情况 public void testThree() { try{ Score_List.maximum(new int[] {}); fail("这里应抛出而没有抛出异常"); } catch(RuntimeException e){ assertTrue(true); } } public static TestSuite suite() { TestSuite suite=new TestSuite(); suite.addTest(new Score_ListTest("testOne")); suite.addTest(new Score_ListTest("testTwo")); suite.addTest(new Score_ListTest("testThree")); return suite; } }
运行截图:
题目2:这是一个简单的计算器类——Computer,能够实现两个整数的加、减、乘、除运算(具体代码见附录C),请利用Junit进行单元测试。
Computer.java
package test; public class Computer { private int a; private int b; public Computer(int x,int y) { a=x; b=y; } public int add(){return a+b;} public int minus(){return a-b;} public int multiply(){return a*b;} public int divide() { if(b!=0) return a/b; else return 0; } }
ComputerTest.java
package test; import junit.framework.TestCase; import junit.framework.TestSuite; public class ComputerTest extends TestCase { Computer a; public ComputerTest(String testName) { super(testName); } protected void setup() { a=new Computer(1,2); } public void testAdd() { setup(); int expResult = 3; int result = a.add(); assertEquals(expResult, result); } public void testMinus() { setup(); int expResult = -1; int result = a.minus(); assertEquals(expResult, result); } public void testMultiply() { setup(); int expResult = 2; int result = a.multiply(); assertEquals(expResult, result); } public void testDivide() { setup(); int expResult = 0; int result = a.divide(); assertEquals(expResult, result); } public static TestSuite suite() { TestSuite suite=new TestSuite(); suite.addTest(new ComputerTest("testAdd")); suite.addTest(new ComputerTest("testMinus")); suite.addTest(new ComputerTest("testMultiply")); suite.addTest(new ComputerTest("testDivide")); return suite; } }
5.实验心得
通过本次实验,我学会了利用Junit进行单元测试,理解了单元测试的任务和这类测试工具的实现原理,并且理解了断言的基本概念和断言测试方法。
附录:Computer类源代码
public class Computer {private int a; private int b; public Computer(int x,int y) { a=x; b=y; } public int add() { return a+b; } public int minus() { return a-b; } public int multiply() { return a*b; } public int divide() { if(b!=0) return a/b; else return 0; } }