用eclipse进行单元测试

  • 安装eclipse

    • 下载eclipse

 

本教程以windows7为例,使用的是绿色免安装版的eclipse,下载地址链接(2017.4.27更新):http://pan.baidu.com/s/1kVNX7oF

    • 安装

  1. 右键eclipse.rar-->“解压到当前文件夹”。(注意,不要解压到中文路径下!)
  2. 安装jdk-8u73-windows-x64.exe,没什么特殊设置,选好路径后一直点“下一步”,直到安装完成。(注意,不要安装到中文路径下!记下安装路径,后面要用!)
    • 配置环境变量

        1、右键“我的电脑”-->“属性”,在弹出的窗口选择“高级系统设置”-->“环境变量”-->点击系统变量下的“新建”-->变量名:classpath  变量值: .;D:\Program Files\Java\jdk1.8.0_73\lib; (注意,变量值为“.;jdk中bin文件夹的路径”,不要忘了前边的“.;”)。如下图所示:

    2、系统变量下的“新建”-->变量名:JAVA_HOME  变量值:D:\Program Files\Java\jdk1.8.0_73;  (变量值为jdk的路径)

如下图所示:

    3、点击系统变量中的“path”-->“编辑”-->变量值:D:\Program Files\Java\jdk1.8.0_73\bin;(在最前边加个英文的“;”,再在分号前加上jdk中bin文件夹的路径)。

至此,eclipse安装完成。

 

  • 单元测试

    • 源代码

      /*
      下面代码实现的是最大子数组和算法
      Coding.net地址:https://git.coding.net/Aaric/MaximumSubarray.git
      */

      package
      softwareEngineering; public class MaximumSubarray { public int findMaximumSubarray(int n, int[] S_subarray) { int S_sum, S_maxsum = S_subarray[0]; for (int i = 0; i < n; i++) { S_sum = 0; for (int k = i; k < n; k++) { S_sum += S_subarray[k]; if (S_sum > S_maxsum) { S_maxsum = S_sum; } } } return S_maxsum; } }package softwareEngineering; public class MaximumSubarray { public int findMaximumSubarray(int n, int[] S_subarray) { int S_sum,
      S_maxsum = 0; //注意,这里有bug,应该改为 S_maxsum = S_subarray[0] for (int i = 0; i < n; i++) { S_sum = 0; for (int k = i; k < n; k++) { S_sum += S_subarray[k]; if (S_sum > S_maxsum) { S_maxsum = S_sum; } } } return S_maxsum; } }
    • 为项目添加Junit

右键项目名称选择“Properties”,在弹出的窗体中选择“Java Build Path”-->选择“Libraries”选项卡-->“Add Library”,在弹出的窗口中选择“Junit”-->“next”,如下图所示:

选择我们需要添加的“Junit”及版本号,添加成功确认即可。

    • 新建Junit

选择项目右键“New”-->“Others”-->“Junit”(在Java目录下)-->“Junit Test Case”。

填写单元测试的名称,勾选“setUp”方法,选择被测试类以及被测试的方法,如图:

    • 测试

      • 经过以上步骤就完成了Junit的创建,可以开始写自己的测试代码。
      • package softwareEngineering;
        
        import static org.junit.Assert.*;
        
        import org.junit.Before;
        import org.junit.Test;
        
        public class TestUnit01 {
        
            @Before
            public void setUp() throws Exception {
                /*
                 * 在这里完成测试前的准备工作
                 * */
            }
        
            @Test
            public void testFindMaximumSubarray() {
                /*
                 * 在这里写测试代码
                 * */
            }
        
        }

        下面是完整的测试代码

        package softwareEngineering;

        import static org.junit.Assert.*;

        import java.util.Scanner;

        import org.junit.Before;
        import org.junit.Test;


        public class TestUnit01 {

            private MaximumSubarray T_maxsum;
            private int[] T_vc;
            private static final int n=5;         //测试数据的个数
            private Scanner sc;
            
            @Before
            public void setUp() throws Exception {
                T_maxsum = new MaximumSubarray();
                T_vc = new int[n];
                sc = new Scanner(System.in);
                for (int i = 0; i < n; i++)
                {
                    T_vc[i] = (Integer)sc.nextInt();  //输入测试数据
                }
            }

            @Test
            public void testFindMaximumSubarray() {
                int res = T_maxsum.findMaximumSubarray(n, T_vc);  //测试
                assertEquals(-1,res);              //比较测试结果与期望值
            }

        }

        按照上述代码修改完毕后,右键,选择“Run as-->1 JUnit Test”来运行单元测试,并在控制台输入要测试的数据。如下图所示:

      • 将源代码中指出的bug调整之后,测试结果如下图所示:


      • 以下是我进行单元测试的结果。

      • 用例编号 用例描述 输入数据 预期输出值 实际输出值 通过/不通过 评价
        1 语句覆盖 1,2,3,4,5 15 15 通过
        2 判定条件覆盖 -1,-2,-3,-4,-5 -1 0 不通过

        源代码有bug,

        需修改

        3 判定条件覆盖 -1,-2,-3,-4,-5 -1 -1 通过

        源代码修改

        之后,测试成功

 

 

 

 

 

  • 结束

    • 原创博文,转载请注明出处!

posted @ 2016-10-06 12:25  Hello.Aaric  阅读(1011)  评论(0编辑  收藏  举报