川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

JUnit 4环境的配置及如何运行调试

作者:川石学院 日期:2021-10-19 17:23:56 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就来谈谈关于软件测试中的“JAVA单元测试框架JUnit 4 ”。

JUnit 4环境的配置及如何运行调试(图1)

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

  JUnit是由Erich Gamma和Kent Beck编写的一个回归测试框架(Regression Testing Framework)。JUnit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。JUnit是一套框架,继承TestCase类,就可以用JUnit进行自动测试了。”

  而JUnit 4是JUnit框架有史以来的最大改进,其主要目标是利用Java 5的Annotation特性简化测试用例的编写。

  一、JUnit 4环境的配置

  使用JUnit 4时不要使用转为Android提供开发的ADT配置的Eclipse,这个Eclipse在JUnit 4中存在一些问题。可以到Eclipse的官方网站(http://www.eclipse.org/)上下载J2SE版本。笔者目前使用的版本如图2-1所示。

JUnit 4环境的配置及如何运行调试(图2)

图2-1 Eclipse

  进行单元测试,首先需要有被测程序,这里以一个简易的计算器作为例子。

  案例2-1:JAVA实现的简易的计算器测试。

  这个计算器中主要包括加、减、乘、除、求平方以及开根号6个函数,其代码如下。

JUnit 4环境的配置及如何运行调试(图3)

  这里暂时先不写乘法函数的实现,并且故意写错减法函数的实现。

  接下来建立JUnit 4测试程序。首先将JUnit 4单元测试包引入这个Project中,方法如下。

  在被测程序的Class上单击鼠标右键,在弹出的菜单上选择【Properties】,然后在弹出的属性窗口中,首先在左边选择【Java Build Path】,然后到右上选择【Libraries】标签,之后在最右边点击【Add Library…】按钮,加入JUnit4,如图2-2所示。

JUnit 4环境的配置及如何运行调试(图4)

图2-2 Java Build Patch

  在Eclipse的被测程序上右键单击该弹出菜单,选择“New->JUnit Test Case”,在弹出的对话框中进行相应的选择,如图2-3所示。

JUnit 4环境的配置及如何运行调试(图5)

图2-3 New JUnit Test Case

  单击【Next>】按钮后,系统自动列出这个类中包含的方法,选择要进行测试的方法。此例中,仅对“加、减、乘、除”4个方法进行测试。之后系统会自动生成一个新类CalculatorTest,里面包含一些空的测试用例。只需对这些测试用例稍作修改,即可使用。

  package com.jerry;

  import static org.junit.Assert.*;

  import org.junit.Before;

  import org.junit.Test;

  import org.junit.Ignore;

  public class CalculatorTest {

  private static Calculator calculator = new Calculator();

  @Before

  public void setUp() throws Exception {

  calculator.clear();

  }

  @Test

  public void testAdd() {

  calculator.add(2,3);

  assertEquals(5,calculator.getResult());

  }

  @Test

  public void testSubstract() {

  calculator.substract(10,2);

  assertEquals(8,calculator.getResult());

  }

  @Test

  public void testMultiply() {

  fail("Not yet implemented");

  }

  @Test

  public void testDivide() {

  calculator.divide(8,2);

  assertEquals(4,calculator.getResult());

  }

  }

  这里暂时先不写乘法函数的测试代码。

  二、JUnt4测试用例的运行和调试

  写好产品代码和测试代码后,就可以运行测试程序了。只要在Eclipse的CalculatorTest类上单击鼠标右键,在弹出的菜单上选择“Run As a JUnit Test”运行测试用例,测试结果就显示出来了,如图2-4所示。

  显然,减法没通过是由于代码中存在问题,而乘法没通过是由于乘法没有实现。首先来修改减法的函数实现。

  public void substract(int m,int n) {

  result =n-m; //Bug: 正确的应该是result =m-n

  }

  再进行一次运行,结果如图2-5所示。

JUnit 4环境的配置及如何运行调试(图6)

图2-4 JUnit单元测试结果(一)

JUnit 4环境的配置及如何运行调试(图7)

图2-5 JUnit单元测试结果(二)

  最后完成乘法的产品代码与测试代码。产品代码如下。

  public void multiply int m,int n) {

  result=m*n

  }

  测试代码如下。

  public void testMultiply() {

  calculator.multiply (8,2);

  assertEquals(16,calculator.getResult());

  }

  图2-6为最后的测试结果。最终产品代码如下

  package andycpp;

  public class Calculator {

  private static int result; // 静态变量,用于存储运行结果

  public void add(int m,int n) {

  result = m + n;

  }

  public void substract(int m,int n) {

  result = m-n;

  }

  public void multiply int m,int n) {

  result = m*n;

  }

  public void divide(int m,int n) {

  result = m / n;

  }

  public void square(int n) {

  result = n * n;

  }

  public void squareRoot(int n) {

  for (; ;) ; //Bug : 死循环,为了后面介绍

  }

  public void clear() { // 将结果清零

  result = 0;

  }

  public int getResult() {

  return result;

  }

  }

JUnit 4环境的配置及如何运行调试(图8)

图2-6 JUnit单元测试结果(三)

  而最终的测试代码如下。

  package com.jerry;

  import static org.junit.Assert.*;

  import org.junit.Before;

  import org.junit.Test;

  import org.junit.Ignore;

  public class CalculatorTest {

  private static Calculator calculator = new Calculator();

  @Before

  public void setUp() throws Exception {

  calculator.clear();

  }

  @Test

  public void testAdd() {

  calculator.add(2,3);

  assertEquals(5,calculator.getResult());

  }

  @Test

  public void testSubstract() {

  calculator.substract(10,2);

  assertEquals(8,calculator.getResult());

  }

  @Test

  public void testMultiply() {

  calculator.multiply (8,2);

  assertEquals(16,calculator.getResult());

  }@Test

  public void testDivide() {

  calculator.divide(8,2);

  assertEquals(4,calculator.getResult());

  }

  }


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-10-19 17:23:56
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-10-19 17:23:56
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-10-19 17:23:56
  • 建筑工程专业朱同学成功转行为软件测试人!2021-10-19 17:23:56
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-10-19 17:23:56
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-10-19 17:23:56
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-10-19 17:23:56
  • 文科生转行软件测试照样拿下高薪15K!2021-10-19 17:23:56
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-10-19 17:23:56
  • 毕业1年,迷茫的他最终选择转行软件测试2021-10-19 17:23:56