Java 中的单元测试
本文将讨论 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'));
}
}
输出:
在第二个测试用例中,我们使用 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 中的实例化是什么意思
发布时间:2023/11/14 浏览次数:100 分类:Java
-
本文讲授 Java 中的实例化主题。本文介绍了 Java 中的实例化概念。我们在 Java 中使用对象是因为它是一种面向对象的编程语言。
Java 中的可变参数
发布时间:2023/11/14 浏览次数:125 分类:Java
-
本文介绍了 Java 中的可变参数。变量参数 varargs 是 Java 中的一个概念。我们可以为方法提供可变数量的参数零或多个参数。
Java 中的静态块
发布时间:2023/11/14 浏览次数:111 分类:Java
-
本文介绍了静态块及其在 Java 中的用途。Java 在对象初始化之前使用静态块来执行代码。当我们用 static 关键字声明一个块时,我们称它为静态块。
在 Java 中实现树
发布时间:2023/11/14 浏览次数:104 分类:Java
-
本文教你在 Java 中如何实现树在本文中,我们将看到两种在 Java 中创建树结构的方法。树结构在多种方面都很有用,例如创建文件夹和文件名的目录。
Java 中的红黑树
发布时间:2023/11/14 浏览次数:58 分类:Java
-
在本教程中,我们将探索 Java 的红树和黑树。我们将讨论它们的评价和属性。首先,我们将从数据结构的角度演示如何使用它。稍后,我们将向你展示一些使用 Java 程序的旋转、搜索和
在 Java 中打印堆栈
发布时间:2023/11/14 浏览次数:146 分类:Java
-
本文介绍如何在 Java 中打印堆栈值。堆栈是一种数据结构,允许用户以后进先出模式添加元素。元素被添加到一个集合中,第一个插入的元素出现在最后一个。
Java 中的堆栈 pop 和 push 方法
发布时间:2023/11/14 浏览次数:85 分类:Java
-
这篇文章讲述了在 Java 中实现栈中的 pop 和 push 方法的方法。push 操作将一个元素添加到堆栈的最顶部位置,而 pop 操作删除堆栈的最顶部元素。我们将在下面的部分中介绍如何将堆栈的概念与
Java 中的箭头运算符 ->
发布时间:2023/11/14 浏览次数:99 分类:Java
-
这篇文章就是要了解 Java 中的箭头运算符。本文介绍了箭头运算符 (->) 在 Java 中的作用,并列出了一些示例代码来理解该主题。
Java 中的 volatile 关键字
发布时间:2023/11/13 浏览次数:174 分类:Java
-
本文讨论了 Java 中的 volatile 关键字及其优缺点,并举例说明了如何使用。Java 是一种非常流行的编程语言,通过了解 Java,我们可以很容易地理解它为什么会在编程社区中获得这样的地位。