JUnit单元测试工具

简介: JUnit4的官网(junit.org)有详细定义:JUnit is a simple framework to write repeatable tests.It is an instance of the xUnit architecture for unit testing framework.意思是:JUnit是一个用于编写可复用测试集的简单框架,它是xUnit的子集。

1.JUnit4快速入门

1.1 JUnit4的简洁:

    JUnit4的官网(junit.org)有详细定义:JUnit is a simple framework to write repeatable tests.It is an instance of the xUnit architecture for unit testing framework.意思是:JUnit是一个用于编写可复用测试集的简单框架,它是xUnit的子集。那么xUnit是什么呢?xUnit是一套基于测试驱动开发的测试框架。使我们能够快速的写单元测试。xUnit的家族成员众多,其中包括Python的单元测试PythonUnit,面向C++的CppUnit以及用于Java测试的JUnit等。

JUnit托管在gitHub上,网址为http://github.com/junit-team/junit/wiki/Download-adn-Install,JUnit有两个包,分别是junit.jar和hamcrest-core.jar。


1.2 JUnit3和JUnit4的区别:

    ①JUnit4所有的测试方法前用@test注释,JUnit3的测试方法必须是以test作为前缀。

    ②JUnit3必须继承junit.framework.TestCasel类,而JUnit4不需要继承任何类

    ③另外,JUnit3初始化资源的方法必须命名为setUp,测试结束后,释放资源的方法必须命名为tearDown,而JUnit4完全没有限制


1.3 我们为什么要使用JUnit呢?

    使用断言机制,将期望的结果跟运行的结果比对,给出测试结果。方便、高效、分离。


1.4 如何开发测试用例

    工具:eclipse,由于eclipse包含了JUnit4,所以不再单独下载。

    首先贴一下代码结构图:


    ①新建一个java project,命名为junit4Demo;

    ②在src上,创建一个新的包:com.mac.unit;

    ③写一个用于被测试的类,在包com.mac.unit下,命名为Calculator,该类有四个方法,进行加减乘除运算;


package com.mac.unit;


public class Calculator {
	public int add(int a,int b){
		return a + b;
	}
	
	public int subtract(int a, int b){
		return a - b;
	}
	
	public int multiply(int a, int b){
		return a * b;
	}
	public int divide(int a, int b){
		return a / b ;
	}
}

    ④接下来,我们导入JUnit包,在项目上,单击右键,build path->Add Library->JUnit->next->选择JUnit4->Finish.这样,在项目的树状结构中就能看到JUnit4的文件夹。

    ⑤新建测试类,在当前包中,new ->JUnit Test Case,命名为CalculatorTest。这个测试类会自动生成一个模板,我们仿照它写一个我们自己的测试方法。


package com.mac.unit;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculatorTest {

	@Test
	public void test() {
		fail("Not yet implemented");
	}

}

    添加我们的方法,并将test方法删除: 

package com.mac.unit;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculatorTest {

	@Test
	public void add(){
		assertEquals(6,new Calculator().add(3,3));
	}
}


    ⑥运行上面这个测试类CalculatorTest,右键->run as ->JUnit Test.运行结果如下图:

扩展一下:

介绍一下JUnit视图:

  • Runs:表示测试正确执行的方法
  • Errors:表示错误的方法
  • Failures:表示期望结果跟测试结果不相同的方法

绿色的状态条表示正常执行,红色的状态条表示出现错误或者异常。

包下面的方法前面有绿色对号,表示正常执行,否则就是出现错误或者出现异常的方法。


2.JUnit4使用详解

2.1 JUnit4最佳实践

    在快速入门中,将测试代码和被测试代码放在同一个包下面,显然这样做不合理,测试代码孩子是在开发时用到,在产品中是不会出现的,因此,需要优化代码结构。

    在项目的下面新建一个源文件夹(Source Folder)test,将测试代码全部放在test下面,这样做得目的是源代码和测试代码分离,并且查阅方便。

在产品最终发布是,将该目录删除即可,不会对项目产生任何影响。

    注意:测试包名和被测试代码包名必须相同。


进一步完善测试代码:

package com.mac.unit;
import static org.junit.Assert.*;
import org.junit.Test;

public class CalculatorTest {
	@Test
	public void testAdd(){
		assertEquals(6,new Calculator().add(3, 3));
	}
	@Test
	public void testSubtract(){
		assertEquals(5,new Calculator().subtract(11, 6));
	}
	@Test
	public void testMultiply(){
		assertEquals(9,new Calculator().multiply(3, 3));
	}
	@Test
	public void testDivide(){
		assertEquals(4,new Calculator().divide(12, 3));
	}
}

 测试结果:



JUint的使用技巧:

①如果我们只想对某个方法进行测试,只需要打开测试代码的树状结构,选中要测试的方法,右键->Run as->JUnit Test即可。



②现在假设我们有很多类,类又有很多方法,我们一个一个的敲出来,这个有点庞大,那么,可否有简单的方法呢?答案是肯定。

项目名称(假如我的项目是Junit4Demo)上右键->new->other->在选择向导中输入“junit”->选择JUnit Test Case(其实就在Java->JUnit->JUnit Test Case)->next,在source folder中选择test,name为CalculatorTest3,Class under test选择被测试的类(com.mac.unit.Calculator),然后next,选择要被测试类要测试的方法,然后Finish。


以上操作生成的代码如下:

#CalculatorTest3.java

/**
 * 
 */
package com.mac.unit;

import static org.junit.Assert.*;
import org.junit.Test;

/**
 * @author zhoujunwen
 *
 */
public class CalculatorTest3 {


	/**
	 * Test method for {@link com.mac.unit.Calculator#add(int, int)}.
	 */
	@Test
	public void testAdd() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link com.mac.unit.Calculator#subtract(int, int)}.
	 */
	@Test
	public void testSubtract() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link com.mac.unit.Calculator#multiply(int, int)}.
	 */
	@Test
	public void testMultiply() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link com.mac.unit.Calculator#divide(int, int)}.
	 */
	@Test
	public void testDivide() {
		fail("Not yet implemented");
	}

}


框架代码已经生成,那么接下来就需要自己去实现测试的逻辑。

本例中的逻辑代码,即测试代码如2.1中最佳实践中优化完善的代码一样,此处就不做展示。


③最简单的生成测试代码:右键选中被测试的类,new->JUnit Test Case,在JUnit TestCase窗口中,选择new JUnit 4 test,Source folder选择test源文件,如下图所示:


下面就和②一样了。

PS: (1).测试方法上必须使用@test进行修饰

      (2).测试服昂发必须使用public void 进行修饰,不能带任何的参数
      (3).新建一个源代码目录来存放我们的测试代码 
      (4).测试类的包应该和被测试类的包保持一致
      (5).测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
      (6).测试类使用Test作为类名的后缀(不是必须的)
      (7).测试方法使用test作为方法名的前缀(不是必须的)

3.JUnit4的深入使用

4.JUnit4在web项目中的使用


目录
相关文章
|
2月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
2月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
282 17
Selenium:强大的 Web 自动化测试工具
|
3月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
149 59
|
3月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
86 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
3月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
155 2
|
3月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
3月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
533 2
|
4月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
66 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
3月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
263 1
|
4月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
71 5

热门文章

最新文章

  • 1
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
  • 2
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 4
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 5
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
  • 6
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
  • 7
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
  • 8
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
  • 9
    Squaretest自动生成单元测试
  • 10
    AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试