Loading

单元测试工具JUnit与Jacoco的配置与使用

简介

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。

特性

JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
3、用于方便的组织和运行测试的测试套件
4、图形和文本的测试运行器

注解

注解 描述
@Before 初始化方法,在任何一个测试执行之前必须执行的代码;
@After 释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰public void 方法;
@Test 测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。
@Ignore 忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;
@BeforeClass 针对所有测试,只执行一次,且必须为public static void;一般用于初始化必要的消耗较大的资源,例如数据库连接等
@AfterClass 针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void;

断言

方法 描述
void assertEquals(boolean expected, boolean actual) 检查两个变量是否相等
void assertTrue(boolean condition) 检查条件为真
void assertFalse(boolean condition) 检查条件为假
void assertNotNull(boolean object) 检查对象不为空
void assertNull(Object object) 检查对象为空
void assertTrue(boolean condition) 检查两个相关对象是否指向同一个对象
void assertNotSame(boolean condition) 检查两个相关对象是否不指向同一个对象
void assertArrayEquals(expectedArray, resultArray) 检查两个数组是否相等

平台

Eclipse,jdk8,EclEmma Java Code Coverage

测试背景

在eclipse中新建java项目并创建被测试类与被测试方法。

安装JDK

根据自己主机选择相应的jdk版本,这里我选择的是jdk-8u281-windows-x64;

选择路径并点击安装

安装完成之后到刚刚安装jdk的文件夹下,复制路径

桌面右键计算机->属性->高级系统设置—>环境变量

新建环境变量JAVAHOME,path(有则追加),值为刚刚复制的路径

完成之后,按super+R,输入cmd,进入cmd后再输入javac,如若出现jdk配置信息,则表明JDK安装成功。

Eclipse 安装

下载地址
下载完成之后解压。打开eclipse.exe

创建一个Java项目

新建测试类

测试类代码

 public class Software {
   private static int result;
   public void add(int n){
      result = result + n;
   }
   public void substract(int n){
      result = result - 1; //bug:正确写法应为result = result - n
   }
   public void multiply(int n){
      
   }
   public void divide(int n){
      result = result / n;
   }
   public void square(int n){
      result = n * n;
   }
   public void squareRoot(int n){
      for(;;) {
         ; //死循环
      }
   }
   public void clear(){
      result = 0;
   }
   public int getResult() {
      return result;
   }

}

JUnit的安装配置

Junit同Eclipse一同提供,无需下载。如若没有JUnit,可在eclipse安装路径下plugins文件夹中找到。

一、配置

1.第一步 右击项目名,点击Properties(属性)

2.在弹出的属性栏中依次点击Java Build Path,Libraries,Add Library...

3.点击JUnit->JUnit4,即可成功导入JUnit包。

二、生成测试框架

  1. 右击SoftWare(被测试类),新建测试框架,具体步骤如图。

2.勾选需要测试的方法,此处选择4个方法,勾选后点击Finish

3.在生成的SoftWareTest文件中写入测试用例

public class SoftwareTest {
    private static Software sw = new Software();
   @Before
   public void setUp() throws Exception {
      sw.clear();
   }

   @Test
   public void testAdd() {
      sw.add(2);
      sw.add(3);
      assertEquals(5, sw.getResult());
   }

   @Test
   public void testSubstract() {
      sw.add(10);
      sw.substract(2);
      assertEquals(8, sw.getResult());
   }
    @Ignore("Multiply() Not yet implemented")
   @Test
   public void testMultiply() {
      
   }

   @Test
   public void testDivide() {
      sw.add(8);
      sw.divide(2);
      assertEquals(4, sw.getResult());
   }

}

4.修改完成后在Test类上右击,选择Run As->JUnit Test

输出结果

其中,绿色对勾代表测试通过,红色叉代表测试失败,斜杠代表忽略
testAdd,testDivide方法测试通过,testSubstract测试失败,testMultiply被忽略。

三、断言的使用

创建一个类

public class assertTest {
	@Test
	   public void testAssertions() {
	      //测试数据
	      String str1 = new String ("abc");
	      String str2 = new String ("abc");
	      String str3 = null;
	      String str4 = "abc";
	      String str5 = "abc";   
	      int val1 = 5;
	      int val2 = 6;
	      String[] expectedArray = {"one", "two", "three"};
	      String[] resultArray =  {"one", "two", "three"};

	      //检查两组数据是否相等
	      assertEquals(str1, str2);

	      //检查条件为真
	      assertTrue (val1 < val2);

	      //检查条件为假
	      assertFalse(val1 > val2);

	      //检查对象不为空
	      assertNotNull(str1);

	      //检查对象为空
	      assertNull(str3);

	      //检查两个对象是否指向同一个对象
	      assertSame(str4,str5);

	      //检查两个对象是否不指向同一个对象
	      assertNotSame(str1,str3);

	      //检查两个数组是否相等
	      assertArrayEquals(expectedArray, resultArray);
	   }
	public static void main(String[] args) {
		Result result = JUnitCore.runClasses(assertTest.class);
        
	      for (Failure failure : result.getFailures()) {
	         System.out.println(failure.toString());
	      }
	                
	      System.out.println(result.wasSuccessful());
	   }
	}

完成后点击运行,输出检查结果

Jacoco安装与使用。

简介:

Jacoco的出发点是为基于JVM运行的代码提供代码覆盖率统计,期望提供轻量级的、可伸缩的、文档较全的库文件来集成各类构建和开发工具。在Eclipse中我们使用EclEmma插件来帮助我们完成Jacoco覆盖率分析。

安装:

在eclipse中依次点击Help-》Eclipse Marketplace。在弹出的窗口中搜索EclEmma,完成后点击安装。

安装完成后顶部标签栏中点击此按钮

展开各类与方法即可观察到方法的的测试覆盖率。

导出测试报告

右击测试的类名

选择Export Session

点击Format选择输出格式

一共提供了四种格式,这里我们选择HTML
Destination选择输出位置
完成之后点击Finish,即可在刚刚选定的路径中生成测试报告

打开文件夹中的index.html文件即可看到测试报告

posted @ 2021-04-27 23:32  BUTU-bird  阅读(1518)  评论(0)    收藏  举报