Tasks:

  1. Install Junit(4.12), Hamcrest(1.3) with Eclipse
  2. Install Eclemma with Eclipse
  3. Write a java program for the triangle problem and test the program with Junit.

a)       Description of triangle problem:

Function triangle takes three integers a,b,c which are length of triangle sides; calculates whether the triangle is equilateral, isosceles, or scalene.

EclEmma安装

1. 选择Help->Eclipse Marketplace->搜索EclEmma,Install;

2. 重启eclipse发现工具栏上出现Coverage图标,说明安装成功;

EclEmma使用

1. 新建一个项目,然后添加一个类,然后简单书写一些代码;

2. 右键项目->选择Coverage As->Java Application,可以得到如下结果:

3. 从运行结果可以看到,有多种颜色,其中

绿色表示代码被执行到

黄色表示代码部分执行到

红色表示代码没有被执行到

3.2 EclEmma检测覆盖率

1. 选择Window->Show View->Other->Java->Coverage可以看到代码执行的覆盖率;

2. 其中可以看到每一个类中代码被执行的百分比,见2,也可以看到整个项目代码被执行的百分比,见1;

3. 其中检测覆盖率可以用到单元测试中,查看单元测试覆盖率。

实验demo

主类:

package text2;

public class triangle {
public static int text1(int a,int b, int c) { int array[];
array= new int[3];
array[0]= a;
array[1]= b ;
array[2]= c; int temp;
for(int i = 0 ; i < 3 ; i++)
{
for(int j = 0 ; j < 2 ; j++)
{
if(array[j]>array[j+1])
{
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
} if(array[0]+array[1]>array[2])
{ if(array[0]==array[1] && array[0]==array[2]) return 3;
if(array[0]==array[1]||array[1]==array[2]) return 2; if(array[0]*array[0]+array[1]*array[1]==array[2]*array[2]) return 4;
return 1;
} return 0; }
}

1代表三角形,0代表不构成3角形,2代表等腰三角形,3代表等边三角形,4代表直角三角形

------------在写博客的时候意识到没有判断是否是等腰直角三角形,如果是则先被判断为了等腰三角形。

测试类:

package text2;
import static org.junit.Assert.*; import java.util.Arrays;
import java.util.Collection; 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 ParameterTest {
int expected = 0;
int input1 = 0 ;
int input2 = 0;
int input3 = 0;
@Parameters
public static Collection<Object[] > t(){
return Arrays.asList(new Object[][]{
{0,3,1,2},
{0,4,2,2},
{2,2,2,1},
{3,1,1,1},
{4,3,4,5},
{1,6,8,7}
});
} public ParameterTest(int expected,int input1,int input2,int input3){
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
this.input3 = input3;
}
@Test
public void test1(){
assertEquals(expected, triangle.text1(input1,input2,input3));
}
}

测试结果:

软件测试—— junit 单元测试的更多相关文章

  1. junit单元测试(keeps the bar green to keeps the code clean)

    error是程序错误,failure是测试错误. junit概要: JUnit是由 Erich Gamma (设计模式的创始人)和 Kent Beck (敏捷开发的创始人之一)编写的一个回归测试框架( ...

  2. spring && Cobertura && maven &&junit 单元测试以及测试覆盖率

    1. 目的:       junit 单元测试,Cobertura   测试覆盖率报告       项目目录结构          2. maven 配置     <project xmlns= ...

  3. 解决Junit单元测试 找不到类 ----指定Java Build Path

    做junit 单元测试时,发现怎么执行都是以前编译过得代码. 最后找到原因了, src/test/java 编译完的.class路径是 Default output folder Default ou ...

  4. JUnit单元测试框架的使用

    http://blog.csdn.net/mao520741111/article/details/51462215 原文地址 http://www.open-open.com/lib/view/op ...

  5. Java 工具 JUnit单元测试

    Java 工具 JUnit单元测试 @author ixenos 1.1.   JUnit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个 ...

  6. Spring框架中整合JUnit单元测试的方法

    一. 步骤: 1. 拷贝jar包: 1. JUnit-4.9.jar和spring-test-4.2.4.RELEASE.jar ; 2. 替换原来的main函数: 1. 在测试类上使用注解方式替换: ...

  7. spring框架学习(三)junit单元测试

    spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...

  8. 备忘:Junit单元测试

    junit 目前测试都是在main方法中调用目前的结果都需要人工对比是否是想要的 1.使用Junit测试方法,绿色条条代表方法测试成功,没有bug,如果是红色条条代表有异常,测试不通过2.点击方法名. ...

  9. 单元测试系列:JUnit单元测试规范

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...

随机推荐

  1. 【linux】linux如何进入单人维护模式修改root密码

  2. JavaScript中的继承模式总结

    一.总结: //js中的几种继承 //原型链的问题,包含引用类型的原型属性会被实例共享,子类型无法给超类型传递参数 function SuperType() { this.colors = [&quo ...

  3. 网页颜色RGB记法和16进制记法转化方法

    A=>10,B=>11,C=>12,D=>13,E=>14,F=>15 看一个例子: 254,112,85 255/16 等于 15 余 14 那么它对应的应该是F ...

  4. 判断是否含有中文,包含返回true,不包含返回false

    /** * 功能:判断是否含有中文,包含返回true,不包含返回false */ function isChina(s) { var patrn = /[\u4E00-\u9FA5]|[\uFE30- ...

  5. /proc 文件系统

    linux提供了一种特殊的文件系统procfs,通常以/proc目录的形式呈现.该目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层的访问.只要应用程序有正确的访问全息,就可以通过读写这些文件 ...

  6. FreeDroid开发过程中遇到的一些问题

    http://bestzp.com/?p=83 Android Studio混淆: build.gradle中   1 2 3 4 5 6 buildTypes {         release { ...

  7. cheat engine lua

    function CEButton1Click(sender) local x = getProperty(CETrainer.CEEdit1,"Text")--这句很重要,获取文 ...

  8. DEBUG模式下屏蔽某些烦人的动态日志信息

    以上就是控制台循环打印的日志信息,总是会刷屏干扰到那些有用的日志信息,所以要把它们屏蔽掉,虽然如果将log级别调成info级别可以不显示了,但是那样的话,别的有用的日志信息就无法显示了. 要有针对性的 ...

  9. [jQuery]《锋利的jQuery》插件部分总结

    /** * <锋利的jQuery>插件部分总结 * * jQuery插件推荐命名:jquery.name.js * * $.fn.extend用于封装对象方法的插件 * $.extend用 ...

  10. ui与ux的区别