软测lab1

Software Testing, Lab 1

Hamcrest的安装:

http://mvnrepository.com/artifact/org.hamcrest/hamcrest-all/1.3 从该网址下载hamcrest-all/1.3版本,将其copy进项目下的lib文件夹,单击右键“Build Path”选项,选择Add to Build Path

Junit的安装:

http://mvnrepository.com/artifact/junit/junit/4.12 从该网址下载junit/4.12版本,将其copy进项目下的lib文件夹,单击右键“Build Path”选项,选择Add to Build Path

Eclemma的安装:

进入Eclipse,菜单栏help>>Eclipse Market Place

点击installed,安装后重新启动eclipse,如果成功安装,工具栏上会出现一个新的按钮,如图所示:

 

方法类一:

package cn.tju.scs;

public class Triangle1 {

public boolean istriangle(int a,int b,int c){

 if(a+b>c&&a+c>b&&b+c>a){

     return true;

     }

 else

     return false;

}

public String form(int a ,int b, int c){

       if(istriangle(a,b,c)){

           if(a==b&&b==c){

            return "equilateral";

            }

           else if((a==b)||(a==c)||(b==c)){         

             return "isosceles";

}

         else

          return "scalene";

}

else 

           return "not a triangle";

}

}

测试类一:

package cn.tju.scs;

 

import static org.junit.Assert.*;

 

import java.util.Arrays;

import java.util.Collection;

 

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

 

@RunWith(Parameterized.class)

public class TestTriangle1 {

private int a;

    private int b;

    private int c;

    private String expected;

private Triangle1 sanjiao;

 

 

 

@Before

public void setup() throws Exception{

 

sanjiao =new Triangle1();

 

}

 

 public TestTriangle1(int a, int b, int c, String expected) {

        this.a = a;

        this.b = b;

        this.c = c;

        this.expected = expected;

    }

 @Parameters

    public static Collection<Object[]> getData() {

        return Arrays.asList(new Object[][] { { 1, 0, 2, "not a triangle" }, { 2, 3, 2, "isosceles" },

                { 5, 5, 5, "equilateral" }, { 2, 3, 4, "scalene" } });

    }

   @Test

   public void testEqual(){

   assertEquals(this.expected, sanjiao.form(a, b, c));

 

   } 

}

 

方法类二:

package cn.tju.scs;

 

public class Triangle1 {

public boolean istriangle(int a,int b,int c){

 if(a+b>c&&a+c>b&&b+c>a){

     return true;

     }  //判断所给边是否能构成三角形

 else

     return false;

}

 

public int form(int a ,int b, int c){

       if(istriangle(a,b,c)){

           if(a==b&&b==c){

            return 3; //代表等边三角形

            }

           else if((a==b)||(a==c)||(b==c)){         

             return 2;//代表等腰三角形

}

         else

          return 1;//代表斜角三角形

}

else

           return 0;//不符合构成三角形的条件

}

 

}

测试类二:

package cn.tju.scs;

 

import static org.junit.Assert.*;

 

import org.junit.Before;

import org.junit.Test;

 

public class TestTriangle1 {

private Triangle1 sanjiao;

 

@Before

public void setup() throws Exception{

sanjiao =new Triangle1();

}

   @Test

   public void testEqual(){

   assertEquals(3,sanjiao.form(5,5,5));

   //assertEquals(1,sanjiao.form(3,4,5));

   //assertEquals(2,sanjiao.form(1,2,2));

   //assertEquals(0,sanjiao.form(-1,0,3));

   }

}

运行测试用例以及用Eclemma进行覆盖测试:

 

覆盖测试,效果如图,其中红色代表未执行,黄色代表条件部分执行,绿色代表已执行

 

将覆盖结果导出HTML报告:

HTML报告可以逐层展开,点击方法还可以看到代码的覆盖情况。

列名含义: 

missed Instructions代码覆盖率,

Missed Branches逻辑分支覆盖率,

Missed Cxty判断执行数,

missed Lines代码行数,

Methods方法个数。 

 

posted @ 2018-03-23 20:27  V_SWAN  阅读(114)  评论(0编辑  收藏  举报