Java用JUnit进行单元测试

发表于:2017-3-30 11:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:柴泽建_Jack    来源:51Testing软件测试网采编

  单元测试应该是开发人员必备的技能,但又是开发人员最容易忽略的内容。我是一个Android Coder,接下来从零开始学习使用JUnit进行单元测试。
  1、最原始的写法
  1.1、准备
  创建一个文件夹作为工作文件夹。
  1.2、下载
  这里我们需要下载两个东西:
  junit.jar
  hamcrest-core.jar
  我这里下载了4.12版本的JUnit和1.3版本的hamcrest。下载完成之后,拷贝到工作文件夹。
  1.3、编写Java
  在工作文件夹创建编写Java类。
  import java.lang.String;
  import java.lang.Integer;
  public class Calculate{
  public int evaluate(String expression) {
  int sum = 0;
  for (String summand: expression.split("\\+"))
  sum += Integer.valueOf(summand);
  return sum;
  }
  }
  然后通过Java命令行编译该类:
  javac Calculate.java
  1.4、编写测试类
  在工作文件夹创建编写测试类
  import static org.junit.Assert.assertEquals;
  import org.junit.Test;
  public class CalculateTest {
  @Test
  public void evaluatesExpression() {
  Calculate calculate = new Calculate();
  int sum = calculate.evaluate("1+2+3");
  assertEquals(6, sum);
  }
  }
  然后使用命令行编译该类:
  javac -cp .:junit-4.12.jar CalculateTest.java
  1.5、运行测试
  使用命令行:
  java -cp .:junit-4.12.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore CalculateTest
  结果:
  JUnit version 4.12
  .
  Time: 0.004
  OK (1 test)
  1.6、测试失败的情况
  更改Java类为:
  import java.lang.String;
  import java.lang.Integer;
  public class Calculate{
  public int evaluate(String expression) {
  int sum = 0;
  for (String summand: expression.split("\\+"))
  sum -= Integer.valueOf(summand); //这里改为-
  return sum;
  }
  }
  重新编译,运行测试。结果:
  JUnit version 4.12
  .E
  Time: 0.009
  There was 1 failure:
  1) evaluatesExpression(CalculateTest)
  java.lang.AssertionError: expected:<6> but was:<-6>
  at org.junit.Assert.fail(Assert.java:88)
  at org.junit.Assert.failNotEquals(Assert.java:834)
  ……
  FAILURES!!!
  Tests run: 1,  Failures: 1
  最基础的用法完成Java的单元测试。我们进行单元测试肯定不会这么麻烦。但是要知道,我们使用任何框架或者编辑器,他们在背后做的事情大概也就是这些。那接下来,仍然手工来做一个使用Gradle构建的Java工程的测试写法。
  2、对使用Gradle构建的Java项目进行单元测试
  2.1、使用Gradle构建Java工程
  估计,即使是使用过Gradle构建的人,也很少有人手动使用grad
  2.1.1、准备
  仍然是创建一个文件夹作为我们的工程文件夹。
  2.1.2、创建build.gradle文件
  在这个文件夹下面创建一个build.gradle文件,内容:
  apply plugin: 'java'
  2.1.3、创建Java工程结构并编写代码
  然后在工程文件夹下创建Java工程结构,并在src/main/java下创建一个文件,Calculator文件。PS:我创建的工程文件夹叫Gradle。
  Calculator.java
  import java.lang.String;
  public class Calculator{
  public int add(int a, int b){
  return a + b ;
  }
  public static void main(String[] args) {
  Calculator calculator = new Calculator() ;
  int result = calculator.add(1,2) ;
  System.out.println(String.valueOf(result));
  }
  }
  2.1.4、使用gradle构建工程
  在工程文件夹下使用命令行gradle build构建工程。
  gradle build
  然后查看工程文件夹:
  我们可以看到多出了build文件夹,这个就是使用gradle构建出的内容。我们可以看到有class和jar文件。那么我们去运行一下试一试。
  我们看到,输出3,正是我们程序预期的结果。OK这样我们就使用gradle构建好了一个最基础的Java工程了。接下来为我们的工程添加测试文件。
  2.2、使用JUnit进行单元测试
  2.2.1 添加依赖
  首先我们需要在build.gradle中添加依赖,那么更改之后的build.gradle文件如下。
  apply plugin: 'java'
  repositories {
  mavenCentral()
  }
  dependencies {
  testCompile 'junit:junit:4.12'
  }
  2.2.2、添加单元测试代码
  在src/test/java中创建CalculatorTest.java文件:
  内容如下:
  import static org.junit.Assert.assertEquals;
  import org.junit.Test;
  public class CalculatorTest {
  @Test
  public void evaluatesExpression() {
  Calculator calculate = new Calculator();
  int sum = calculate.add(1,2);
  assertEquals(3, sum);
  }
  }
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号