迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的单元测试

作者:迹忆客 最近更新:2023/11/13 浏览次数:

本文将讨论 Java 中的单元测试。有几种类型的测试,单元测试就是其中之一。

单元测试涉及对隔离组件(如类和方法)的测试。这是有效的,因为我们可以很好地控制整个程序的特定部分。


在 Java 中使用 JUnit 测试框架进行单元测试

下面的例子有一个简单的程序,它使用 calculateOccurrences() 方法返回字符串中指定字符的出现总数。

calculateOccurrences() 方法接收两个参数:stringToUse,第二个参数是 characterToFind

在函数中,我们遍历字符串并检查字符串中是否有任何字符与 characterToFind 匹配,如果匹配,则增加 charCount。我们使用适当的参数调用 main() 函数。

我们需要对其进行测试才能知道它是否正常工作;我们将在本教程的下一部分执行此操作。

public class JavaTestExample {
  public static void main(String[] args) {
    int getTotalOccurrences = calculateOccurrences("pepper", 'p');
    System.out.println(getTotalOccurrences);
  }

  public static int calculateOccurrences(String stringToUse, char characterToFind) {
    int charCount = 0;
    for (int i = 0; i < stringToUse.length(); i++) {
      if (stringToUse.charAt(i) == characterToFind) {
        charCount++;
      }
    }

    return charCount;
  }
}

输出:

3

为了对 Java 程序进行单元测试,我们使用了专门为 Java 中的单元测试而设计的 JUnit 测试框架。我们使用以下 maven 依赖项导入它。

  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
  </dependency>

为了测试不同的场景,我们创建测试用例,然后检查测试是否通过给定条件。

对于此示例,我们使用可从 https://www.jetbrains.com/idea/ 下载的 Intellij IDEA IDE。

我们将主要的 Java 和测试文件保存在同一个包中,以防止任何访问错误。

下面是第一个测试用例;我们用 @Test 注释该方法以使其成为测试用例。JUnit 为我们提供了几种断言方法来帮助我们编写测试。

为了测试返回值是否等于我们的期望,我们使用 assertEquals() 方法。

我们在这个程序中使用的 assertEquals() 方法有两个参数;第一个是我们通过 1 的预期结果。

第二个参数是 calculateOccurrences() 方法在传递 this is an java example 字符串和 i 作为要查找的字符时的实际返回值。

我们运行测试,IDE 中会弹出 Run 窗口。请注意,输出中的窗口标题显示测试失败:1 次测试中的 1 次

此外,我们得到带有 AssertionError 的消息,预期值为 1,实际值为 2。

测试失败是因为我们预期结果为 1,即 this is a java example 字符串中 i 的数量,但实际上,其中 i 出现了两次,因此测试失败。

测试用例 1:

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class JavaTest {
  @Test
  public void testCheckChar() {
    assertEquals(1, JavaTestExample.calculateOccurrences("this is a java example", 'i'));
  }
}

输出:

Java 中的单元测试 - 测试用例 1

在第二个测试用例中,我们使用 2 作为具有相同字符串的预期结果,在输出中,我们得到一个绿色的勾号,带有消息 Test Passed:1 of 1 test。这是因为预期值等于实际值。

测试用例 2:

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class JavaTest {
  @Test
  public void testCheckChar() {
    assertEquals(2, JavaTestExample.calculateOccurrences("this is an java example", 'i'));
  }
}

输出:

Java 中的单元测试 - 测试用例 2

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便