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. php定时执行脚本

    php定时执行脚本 ignore_user_abort(); // run script. in background set_time_limit(0); // run script. foreve ...

  2. C#调用MySql

    1.要连接MySql数据库必须首先下载MySql官方的连接.net的文件,文件下载地址为http://dev.mysql.com/downloads/connector/net/6.6.html#do ...

  3. GL_GL系列 - 日记账处理管理分析(案例)

    2014-07-07 Created By BaoXinjian

  4. [MySQL] 两个优化数据库表的简单方法--18.3

    这里介绍两个简单的优化MySQL数据库表的方法 一.定期分析表和检查表 1.分析表语法如下: alalyze [local|no_write_to_binlog] table table_name1[ ...

  5. 转-android 支付宝SDK集成

    http://blog.csdn.net/kroclin/article/details/40746779 一.前言 最近做的项目刚好要集成支付宝,上网找了很多资料,介绍得感觉不是很全面,所以我经过这 ...

  6. Java多线程之notifyAll的作用域

    notifyAll()因某个特定锁而被调用时,只有等待这个锁的任务才会被唤醒. package Thread.Wait; import java.util.Timer; import java.uti ...

  7. block作为类的属性时用copy

    1. block作为类的属性时用copy Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的 <栈 :由系统维护的局 ...

  8. rails 配置使用mysql

    1 在gemfile中要添加 gem 'mysql2' 2 在mysql数据库中创建三个数据库 dept_dev dept_test dept_pro 3 配置文件 default: &def ...

  9. ruby字符串学习笔记5

    1获取字符串某部分 s = "My kingdom for a string!" s.slice(3,7) # kingdom s[3,7] # kingdom s[/.ing/] ...

  10. C++学习13 类class和结构体struct的区别

    C++保留了C语言的 struct,并且加以扩充.在C语言中,struct 只能包含数据成员,不能包含成员函数.而在C++中,struct 类似于 class,既可以包含数据成员,又可以包含成员函数. ...