Java JUnit简介
在本文中,我们将开始学习JUnitFramework。JUnit是用于对Java应用程序进行单元测试的框架。它由KentBack和ErichGamma开发,旨在帮助开发人员创建更好的应用程序。在进行单元测试时,JUnit已成为开发人员使用的标准工具。
每天,当您从最小的应用程序(由单个类组成)到大型应用程序的项目创建应用程序时,开发工作流程将始终相同。您将首先编写一个小的代码,对其进行编译,然后运行代码并最终进行测试。首先,您会发现事情并没有按预期进行。因此,您将返回到自己喜欢的IDE,检查错误是什么,然后重复该过程,代码,编译,运行和测试,直到获得所需的结果。
我们可以手动执行此步骤。例如,当您拥有控制台应用程序时,通常将运行代码,检查控制台屏幕上打印的结果,以了解程序是否返回正确的结果。当发现错误时,将对其进行修复,然后一次又一次地重新运行代码。这种测试似乎是一项耗时的活动,令人厌烦甚至使您感到无聊。而不是测试代码,而是在测试自己的测试能力。因为您必须检查控制台上打印的输出是否正确。
这是一个非常简单的计算器的简单示例,该计算器知道如何将两个数字相加以及如何在控制台应用程序中使用简单的主类对其进行测试。
package org.nhooo.junit; public class Calculator { public static int add(int a, int b) { return a + b; } public static void main(String[] args) { int a = 10; int b = 15; int c = Calculator.add(a, b); System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); if (c == 25) { System.out.println("Test success!"); } else { System.out.println("Test failed!"); } } }
为了简化工作,JUnit框架提供了很大的帮助来克服这些问题。您可以通过创建单元测试来告诉JUnit框架测试您的代码。您将创建一个测试代码的类,并在此单元测试类中定义测试条件。您可以执行这些单元测试,它将报告测试是否通过。您可以随意运行它多次,以查看修改部分代码后测试是否仍然通过。
现在,让我们看看JUnit如何帮助我们测试以前的计算器代码。在创建单元测试类之前,我们需要从JUnit网站下载JUnit库,单击链接下载页面并下载jar。您需要下载两个主要的jar文件:junit.jar和 hamcrest-core.jar。当使用IDE时,JUnit通常作为IDE的一部分安装,例如NetBeans,Eclipse或IntelliJIDEA。
让我们编写单元测试代码。
package org.nhooo.junit; import org.junit.Test; import static junit.framework.Assert.*; public class CalculatorTest { @Test public void addTwoNumbersTest() { int a = 10; int b = 15; assertEquals(25, Calculator.add(a, b)); } }
从此代码段中您可以看到:
我们创建一个名为的类CalculatorTest。我们通常用与被测类相同的名称来命名单元测试类,但在Test后面加上后缀。
我们创建了一个称为的测试方法addTwoNumberTest()。您可以使用描述性的名称来命名测试方法。这将使您了解该方法正在尝试测试的内容。
为了使方法成为单元测试方法,我们向其添加了@Test注释。该注释将告诉JUnit框架,带注释的方法是应代表我们执行的单元测试的一部分。
在测试方法主体中,我们使用该assertEquals()方法来检查测试结果。在这种情况下,当Calculaor.add()方法将两个数字相加时,我们期望返回25a+b。
创建单元测试类之后,让我们在命令提示符下编译该类和此JUnit测试。记住也要测试类,这是Calculator单元测试类旁边的类。要执行JUnit测试,您可以键入以下命令。
java -cp .;junit-4.10.jar org.junit.runner.JUnitCore org.nhooo.junit.CalculatorTest
我有意将junit.jar文件放在工作目录的根目录中,以便使该-cp选项简短。classpath选项告诉Java在哪里可以找到所需的类文件。
这就是JUnit简介的全部内容。在接下来的文章中,我将撰写有关JUnit以及如何使用其他可用注释的更多信息,以便您编写更好的测试。