JUnit 测试

本文深入解析JUnit框架,介绍其作为Java单元测试工具的核心功能与使用方法,包括Assert、TestCase、TestResult和TestSuite类的详细说明,以及注解如@Test、@Before和@After的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

JUnit是一个java语言的单元测试框架。所谓单元测试是测试应用程序的功能是否能够按需要正常运行。单元测试是一个对单一实体(类或方法)的测试。多数Java的开发工具都集成了JUnit单元测试工具。

特点:

  • JUnit是一个开放的资源框架,用于编写和运行测试。
  • JUnit有效提高代码质量。
  • 提供注释来识别测试方法。
  • 提供断言来测试预期结果。
  • 提供测试运行来运行测试。

系统要求:

  • JUnit 是java的一个框架,所以我们需要安装JDK(JDK1.5或以上)。
  • JDK1.5及以上版本开始支持JUnit4,JUnit采用注解的方式实现测试代码的编写。

JUnit PAI:

JUnit 所有核心类都包含在 junit.framework 包下:

JUnit核心类
名称功能
Assert提供了一系列的编写测试的声明方法
TestCase定义了运行多重测试的固定格式
TestResultTestResult 类收集所有执行测试案例的结果
TestSuiteTestSuite 是测试的集合

1、Assert 类

org.junit.Assert :public class Assert extends java.lang.Object 提供了一系列的编写测试的声明方法。

org.junit.Assert
序号方法描述
1void assertEquals(boolean expected, boolean actual)检查两个变量或者等式是否平衡
2void assertFalse(boolean condition) 检查条件是否为假
3void assertTrue(boolean condition) 检查条件是否为真
4void assertNotNull(Object object) 检查对象是否不为空
5void assertNull(Object object)检查对象是否为空
6void fail() 在没有报告的情况下使测试不通过
7void assertArrayEquals(expectedArray, resultArray)检查两个数组是否相等

 

2、TestCase 类

org.junit.TestCaset :public abstract class TestCase extends Assert implements Test

org.junit.TestCase
序号方法描述
1int countTestCases()为被run(TestResult result) 执行的测试案例计数
2TestResult createResult()创建一个默认的 TestResult 对象
3String getName()获取 TestCase 的名称
4TestResult run()收集由TestResult 对象产生的结果
5void run(TestResult result)在 TestResult 中运行测试案例并收集结果
6void setName(String name)设置 TestCase 的名称
7void setUp()创建固定装置,例如,打开一个网络连接
8void tearDown()拆除固定装置,例如,关闭一个网络连接
9String toString()返回测试案例的一个字符串表示

3、TestResult 类

org.junit.TestResult :public class TestResult extends Object

org.junit.TestResult
序号方法描述
1void addError(Test test, Throwable t)在错误列表中加入一个错误
2void addFailure(Test test, AssertionFailedError t)在失败列表中加入一个失败
3void endTest(Test test)显示测试被编译的这个结果
4int errorCount()获取被检测出错误的数量
5Enumeration errors()返回错误的详细信息
6int failureCount()获取被检测出的失败的数量
7void run(TestCase test)运行 TestCase
8int int runCount()获得运行测试的数量
9void startTest(Test test)声明一个测试即将开始
10void stop()标明测试必须停止

 

4、TestSuite 类

org.junit.TestSuite :public class TestSuite extends Object implements Test

org.junit.TestSuite
序号方法描述
1void addTest(Test test) 在套中加入测试。
2void addTestSuite(Class<? extends TestCase> testClass)将已经给定的类中的测试加到套中
3int countTestCases()对这个测试即将运行的测试案例进行计数
4String getName()返回套的名称。
5void run(TestResult result)在 TestResult 中运行测试并收集结果。
6void setName(String name)设置套的名称。
7Test testAt(int index)在给定的目录中返回测试
8int testCount()返回套中测试的数量。
9static Test warning(String message)返回会失败的测试并且记录警告信息。

注释

JUnit 为我们提供了测试相关注释。

JUnit常用注释
序号注释描述
1@Test应用在 public void 修饰的方法上,标记该方法为一个测试案例 。
2@Before应用在 public void  修饰的方法上,对每一个测试用例执行,在每一个方法执行之前执行。
3@After应用在 public void  修饰的方法上,对每一个测试用例执行,在每个方法之后执行。
4@BeforeClass在应用在 public void  修饰的方法上,标记该方法需要在类中所有方法前运行。
5@AfterClass在应用在 public void  修饰的方法上,它将会使方法在所有测试结束后执行(可以用来进行清理活动)。
6@Ignore该注释被应用后,方法将被忽略。

示例:

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

public class JunitAnnotation {

   //execute before class
   @BeforeClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute after class
   @AfterClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute before test
   @Before
   public void before() {
      System.out.println("in before");
   }

   //execute after test
   @After
   public void after() {
      System.out.println("in after");
   }

   //test case
   @Test
   public void test() {
      System.out.println("in test");
   }

   //test case ignore and will not execute
   @Ignore
   public void ignoreTest() {
      System.out.println("in ignore test");
   }
}

结果:

检查运行结果

in before class
in before
in test
in after
in after class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值