返回介绍

13.3 应用 JUnit

发布于 2025-04-22 20:10:04 字数 2954 浏览 0 评论 0 收藏

对于单元测试,我推荐使用 JUnit,你可以从 http://junit.org 下载它。点击下载并安装链接后,你将被重定向到下载页面。你需要下载 junit.jar 和 hamcrest-core.jar 文件。后者是 JUnit 的依赖项,目前版本为 4.12。

如果使用 Maven 或 STS,请将此元素添加到 pom.xml 文件以下载 JUnit 及其依赖关系。

<dependency>
  <groupId> junit </ groupId>
  <artifactId> junit </ artifactId>
  <version> 4.12 </ version>
  <scope>test</scope>
</ dependency>

JUnit 也广泛用于集成测试,你将在本章后面了解这一点。

你可以通过阅读 JUnit 网站上的文档,了解有关 JUnit 的更多信息以及如何编写 JUnit 测试。

13.3.1 开发一个单元测试

编写单元测试很容易。使用 @org.junit.Test 简单地注解所有测试方法。此外,你可以通过使用 @ org.junit.Before 注解来创建初始化方法。初始化方法在调用任何测试方法之前调用,你可以编写准备测试方法的代码,例如创建将由测试方法使用的对象。

你还可以通过使用 @ org.junit.After 注解方法来创建清理方法。清理方法在测试类中的所有测试方法都被执行之后调用,并且可以用来释放测试期间使用的资源。

清单 13.3 显示了需要进行单元测试的 Calculator 类。

清单 13.3 Calculator 类

package com.example; 
public class Calculator { 
  public int add(int a, int b) { 
    return a + b; 
  }

  public int subtract(int a, int b) {
    return a - b; 
  }
}

清单 13.4 显示了 Calculator 类的单元测试类。

清单 13.4 单元测试类

package com.example; 
import org.junit.After; 
import org.junit.Assert; 
import org.junit.Before; 
import org.junit.Test; 

public class CalculatorTest { 
  @Before
  public void init() {
  } 

  @After
  public void cleanUp() { 
  } 

  @Test
  public void testAdd() { 
    Calculator calculator = new Calculator(); 
    int result = calculator.add(5, 8); 
    Assert.assertEquals(13, result); 
  }

  @Test
  public void testSubtract() { 
    Calculator calculator = new Calculator(); 
    int result = calculator.subtract(5, 8);
    Assert.assertEquals(-3, result); 
  }
}

CalculatorTest 类有两个测试方法、一个初始化方法(用 @Before 注解)和一个清除方法(用 @After 注解)。org.junit.Assert 类提供用于声明结果的静态方法。例如,assertEquals 方法用来比较两个值。

13.3.2 运行一个单元测试

Eclipse 和 STS 知道一个类是否是一个 JUnit 测试类。要运行测试类,请右键单击包资源管理器中的测试类,然后选择运行方式> JUnit 测试。或者,使用编辑器打开测试类,然后按 Ctrl + F11 键。

测试完成后,如果 JUnit 视图尚未打开,Eclipse 或 STS 将打开它。如果单元测试成功完成,你将在 JUnit 视图中看到一个绿色条,如图 13.1 所示。

如果其中一个测试失败,你将看到一个红色条,如图 13.2 所示。

图片 1

图 13.1 一个通过的测试

图片 2

图 13.2 一个没通过的测试

13.3.3 通过测试套件来运行全部或多个单元测试

在有十几个类的一个小项目中,你将有十几个测试类。在一个更大的项目中,你会有更多测试类。在 Eclipse 或 STS 中,运行一个测试类很容易,但如何运行所有的测试类?

使用 JUunit 的解决方案非常简单。创建一个 Java 类并使用 @RunWith(Suite.class)和 @SuiteClasses() 注解它。后者应该列出你想运行的所有类和其他套件测试。清单 13.5 显示了一个示例。类体可以留空。

清单 13.5 一个测试套件

package com.example;
import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

@RunWith(Suite.class)
@SuiteClasses({ MyTest1.class, MyTest2.class }) 
public class MyTestSuite { 
}

如果使用 CI 服务器,则可以将服务器设置为每次提交新代码或修改的代码时自动运行单元测试。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。