如何在 Java 中编写测试用例?

2025年5月2日 | 阅读 9 分钟

测试用例是在软件创建时需要进行测试的条件。在编写 Java 测试用例之前,我们需要了解什么是测试用例。本节将简要介绍测试用例,然后介绍如何在 Java 中编写测试用例。

什么是测试用例?

测试用例是由软件测试人员为已开发的应用而测试的一组条件。测试人员检查和评估已构建的软件是否满足客户的所有要求。如果发现任何错误或缺陷,测试人员会通知开发团队。构建测试用例和执行测试的目的是验证是否满足了客户的所有需求,并且软件中没有缺陷。

例如: 对于登录模块,测试人员会制定以下测试用例:

  1. 验证登录页面是否包含用户名、密码文本字段和登录按钮。
  2. 验证成功登录后,用户是否被重定向到主页。
  3. 通过提供有效的用户名和密码验证用户是否成功登录。
  4. 通过提供有效的用户名和无效的密码验证用户是否登录失败。
  5. 验证用户密码是否以加密形式存储在数据库中,等等。

通过这些,测试人员可以想到尽可能多的测试用例,只有当所有测试用例都成功通过后,已构建的软件才能交付给客户。

要了解更多关于测试用例的信息,请访问 test-case

如何在 Java 中创建测试用例?

Java 是一种面向对象的编程语言,构建 Java 项目意味着创建许多类,每个类都有特定的方法。要构建一个好的项目/应用程序,我们需要测试该项目并检查应用程序是否满足所有要求。在 Java 中,类和方法起着至关重要的作用,因此我们需要测试类和方法,它们共同被称为一个单元,此时就需要对它们执行单元测试。因此,为了在 Java 中执行单元测试,有几种测试框架。其中一个著名的框架是 JUnit,它是一个用于执行单元测试的框架。为了执行 Junit 测试,我们需要创建测试用例并针对每个测试用例测试项目并确定结果。

编写测试用例

为了理解如何创建测试用例,让我们创建一个简单的类并进行检查。

让我们在 Eclipse 中创建一个名为 DemoClass 的类,其中我们按照以下步骤执行了一个简单的加法方法。

1) 打开 Eclipse IDE 并创建一个新的 Maven 项目,方法是单击 File> New > Other…,然后将出现 Select a wizard 对话框。在 Wizards 下,您会看到 Maven 存储库,单击下拉菜单,单击 Maven Project,然后单击 Next。下面是截图

How To Write Test Cases In Java

2) 选择“Create a simple project”,您也可以进行 archetype 选择。这里我们做了一个简单的项目,所以我们选择了“Create a simple project”选项,然后单击 Next,如下面的截图所示。

How To Write Test Cases In Java

3) 现在,您可以看到 New Maven Project 对话框将打开,在那里我们必须按照以下方式提供 Group IdArtifact Id

Group Id: 它是用于唯一标识项目组的名称。它遵循 Java 命名规则,因此必须提供为 com.example.javatpoint 或其他名称。

Artifact Id: 它是为我们要创建的项目指定的唯一名称。因此,对于我们的项目,我们提供了以下 Group Id 和 Artifact Id(即项目名称),如下面的截图所示。

How To Write Test Cases In Java

4) 单击 Finish,我们的 Maven 项目将创建完成,其中包含一些文件,主要文件是 xml 文件,其中包含已创建项目的详细信息。

5) 在项目名称内,您会看到一些存储库,右键单击 src/main/java 存储库,单击 New > Class,然后创建一个 Java Class。这里我们创建了一个 java 类,我们在其中实现了一个简单的两个数相加的方法。代码如下

下面是代码片段

How To Write Test Cases In Java

6) 现在,我们已经实现了一个类,是时候测试它了,为此,我们需要使用 Junit。因此,转到 src/test/java 文件夹并右键单击它。单击 New > Junit Test Case

How To Write Test Cases In Java

并按照命名规则创建 JUnit 测试用例。

How To Write Test Cases In Java

然后单击 Finish。JUnit 测试用例将被创建。这里我们创建的 JUnit 测试用例是 TestDemoClass.java,我们获得了以下输出屏幕,其中包含以下代码。

下面是代码片段

How To Write Test Cases In Java

这里我们使用了 New Junit 4 test。要测试类或方法,我们需要使用测试注解,这里我们在 test() 方法之前使用了 @Test 注解。

注意:我们采用了一个可以手动测试的示例项目,但在做一个大项目时,它可能包含大量具有许多方法的类。手动检查和测试所有这些可能不灵活,并且一个类的更改肯定会影响其他类。因此,自动化测试,即 Junit 测试就派上用场了。

7) 在 TestDemoClass 中创建 DemoClass 的对象,我们需要测试 sum 方法,为此我们创建了以下测试用例代码。

下面是代码片段

How To Write Test Cases In Java

8) assertEquals(expectedVal, calculatedVal) 方法用于确定测试用例的状态,是失败还是通过。要运行/执行测试用例,右键单击代码,然后选择 Run As > Junit Test

How To Write Test Cases In Java

9) 我们已经尝试了以下测试用例。

测试用例 1: 我们创建了一个测试用例,其中测试了在提供两个值后是否获得相应的和。如果没有,测试用例将失败,但对于上述值,我们得到了以下输出。

How To Write Test Cases In Java

因此,我们的测试用例成功通过,这由 绿色 符号表示。

测试用例 2: 如果我们为计算参数 (10, 15) 传递相同的代码,但期望值为 100,并具有以下值进行测试,则我们的测试用例将失败。代码如下:

下面是代码片段

How To Write Test Cases In Java

所以,我们的测试用例失败了,这意味着我们的代码是正确的,这由 红色信号 表示,您可以在下面的片段中看到。

How To Write Test Cases In Java

测试用例 3: 如果我们为计算参数 (-5, 8) 传递一个负值和一个正值,并且期望参数值为 3,那么我们的测试用例将成功通过,您可以在下面的片段中看到。

How To Write Test Cases In Java

但是,如果我们传递 (5, -8) 作为计算值,而期望值为 3,则测试用例肯定会失败。

测试用例 4: 如果我们为计算参数传递两个负值 (-10,-15),而期望参数值为 -25,那么我们的测试用例将通过,您可以在下面的片段中看到。

How To Write Test Cases In Java

但是,如果我们传递的期望值为 25,测试用例将肯定会失败。让我们在下面的片段中看看。

How To Write Test Cases In Java

通过这种方式,我们可以根据我们的想法、判断和测试能力来思考和创建测试用例。除了上面解释的示例,软件测试人员还可以测试非常大的应用程序,并创建和测试某些测试用例。为了记录所有测试用例,他们使用 Excel 表格并检查他们创建的测试用例是否满足客户要求或是否存在一些缺陷。软件测试人员通过将自己设想为普通用户来创建和编写测试用例,从而检查应用程序/软件。

编写测试用例的优势

1. 语言特性和优势

  • 面向对象编程 (OOP): Java 是一种面向对象的编程语言,非常适合创建模块化、可重用和可扩展的测试用例。它允许开发人员将测试逻辑封装在对象中,从而更容易维护和扩展测试套件。
  • 强类型和编译时检查: Java 的强类型系统有助于在开发过程早期捕获错误,从而减少运行时问题。它使测试用例更加可靠,因为许多错误可以在代码运行之前就被识别和修复。
  • 平台独立性: Java 由于 Java 虚拟机 (JVM) 而具有平台独立性。这确保了用 Java 编写的测试用例可以在支持 JVM 的任何平台上运行,从而提高了测试执行的可移植性和一致性。

2. 丰富的测试框架和库生态系统

  • JUnit: JUnit 是 Java 生态系统中应用最广泛的测试框架之一。它提供了注解、断言和测试运行器,可以轻松编写和管理测试用例。JUnit 与构建工具和 CI/CD 流水线的集成进一步简化了测试过程。
  • TestNG: TestNG 是另一个强大的测试框架,它提供了高级功能,如并行测试执行、数据驱动测试和配置管理。它比 JUnit 提供了更大的灵活性,尤其适用于大型企业应用程序。
  • 模拟框架: Mockito 和 EasyMock 等框架简化了模拟对象的创建,允许通过模拟依赖项进行隔离单元测试。这对于测试与外部系统或资源交互的组件特别有用。
  • 行为驱动开发 (BDD) 工具: Cucumber 和 JBehave 等工具支持 BDD,它允许使用自然语言格式编写测试用例,从而弥合了技术和非技术利益相关者之间的差距。这些工具与 Java 无缝集成,增强了协作和清晰度。

3. 与开发工具和环境集成

  • 集成开发环境 (IDE): Java 开发得到了 IntelliJ IDEA、Eclipse 和 NetBeans 等强大 IDE 的支持。这些 IDE 提供了代码补全、重构和调试等功能,便于编写和维护测试用例。
  • 构建工具: Maven 和 Gradle 是 Java 生态系统中流行的构建工具,它们可以自动化构建过程、管理依赖项并与测试框架集成。这种自动化可确保测试在构建过程中一致地执行,从而提高代码质量。
  • 持续集成/持续部署 (CI/CD): Java 测试用例与 Jenkins、Bamboo 和 GitLab CI 等 CI/CD 工具集成良好。这种集成允许在代码更改时自动执行测试,提供即时反馈并确保新更改不会破坏现有功能。

4. 社区支持和文档

  • 广泛的社区支持: Java 拥有庞大而活跃的开发人员和测试人员社区。这个社区提供了丰富的资源,包括教程、论坛和开源项目,这些资源可以帮助解决问题和改进测试实践。
  • 全面的文档: Java 及其相关的测试框架附带了广泛的文档。这使得开发人员更容易理解如何有效地使用这些工具,并在测试过程中遇到的任何问题进行故障排除。

5. 性能和可扩展性

  • 高效执行: Java 的性能优化和高效的内存管理有助于快速执行测试。这对于执行时间可能影响开发周期的庞大测试套件尤其重要。
  • 可扩展性: Java 在处理大型应用程序方面的能力扩展到其测试框架。TestNG 等工具旨在与应用程序一起扩展,允许对具有复杂要求的企业级应用程序进行高效测试。

6. 最佳实践和高级测试技术

  • 测试驱动开发 (TDD): Java 支持 TDD 实践,即在编写代码之前编写测试。这种方法有助于确保代码满足指定的要求,并鼓励编写更简洁、更易于维护的代码。
  • 持续测试: 由 Java 与 CI/CD 流水线的集成支持的持续测试实践,确保在整个开发周期中频繁运行测试。这种持续的反馈循环有助于及早发现缺陷并提高整体代码质量。
  • 自动化 UI 测试: Selenium 是一个流行的自动化 UI 测试工具,通常与 Java 一起使用。它允许全面测试 Web 应用程序的用户界面,确保它们在不同的浏览器和设备上都能正常运行。

7. 安全性和可靠性

  • 静态分析工具: SonarQube 和 PMD 等工具与 Java 集成以提供静态代码分析。这些工具有助于识别潜在的安全漏洞和代码质量问题,确保测试用例和代码库的安全可靠。
  • 健壮的错误处理: Java 的异常处理机制允许在测试用例中进行健壮的错误处理。它确保测试能够优雅地处理意外情况,并为调试提供有意义的反馈。