单元测试_JUnit常用单元测试注解介绍及代码演示 1

简介: 单元测试_JUnit常用单元测试注解介绍及代码演示

JUnit常用单元测试注解介绍及代码演示

 

by:授客 QQ:1033553122

1.测试环境 1

2.基础概念 1

3.常用Annotation 1

4.运行环境配置 3

maven配置 3

Eclipse maven运行环境配置 4

更新项目 5

5.单元测试实践 7

被测类BinarySearch 7

测试类BinarySearchTest 8

被测类Caculator 11

测试类CaculatorTest 12

测试套件类RunAllTestClass 13

运行单元测试 13

运行结果展示 16

 

1. 测试环境

Win7

 

eclipse-java-oxygen-3a-win32-x86_64.zip

 

apache-maven-3.5.4-bin.zip

https://maven.apache.org/download.cgi

https://pan.baidu.com/s/1OUNC0kZNduXJJLbpw76GZA

 

 

2. 基础概念

测试方法 :用@Test注解修饰的一些类方法。

测试类:包含一个或多个测试方法的java类;

测试套件:用@RunWith(Suite.class) 及@SuiteClasses注解的;font-size:10.5000pt;mso-font-kerning:0.0000pt;">一个或多个测试类

 

 

3. 常用Annotation

 

@RunWith  修饰测试类,用于修改运行器,如果不指定@RunWith则使用默认运行器。当测试类被@RunWith注解修饰时,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器来运行单元测试,而不使用JUnit默认的运行器。

 

常见的运行器有:

@RunWith(JUnit4.class)  junit4的默认运行器

 

@RunWith(SpringRunner.class)  集成了spring的一些功能的运行器

 

@RunWith(Suite.class)  配合@SuiteClasses使用,用于执行测试套件的运行器  

 

@RunWith(Parameterized.class)   参数化运行器,配合@Parameters使用,参数化运行单元测试,需要在被修饰的测试类中的,提供数据的方法上加上一个@Parameters注解,例如,注意,这个提供数据的方法必须是静态的(static),并且返回一个集合(Collection)

 

我们可以为@Parameters 提供一个“名称”,以便更清晰的标记每个测试方法在每次运行时所使用的参数

 

“名称”可以包含占位符,该占位符在运行时将会被替换。

·{index}: 当前参数的索引

·{0}, {1}, …: 第一个参数,第二个参数等对应的参数值。

 

 

 

@Test  注解将一个普通方法修饰为一个测试方法,可选参数 timeout、expected,如下:

@Test(timeout = 1000)  设置被修饰的测试方法在预期时间(例中为 1000毫秒)内执行完成,否则测试失败;

 

@Test(expected = Exception.class)设置被修饰的测试方法应该抛出的预期异常,异常类型为:Exception.class,如果测试方法没有抛出预期的异常,则测试失败, 例如 @Test(expected = NullPointException.class)

 

注意:测试方法必须是public void,即公共、无返回

 

参考链接:https://www.cnblogs.com/mengdd/archive/2013/04/13/3019278.html

 

 

 

@BeforeClass  注解用于修饰测试类中的非测试方法,该方法将在其所属测试类中的所有测试方法被执行前运行,且只运行一次,可用于做一些测试基础准备,比如数据库连接,读取文件等。

 

注意:@BeforeClass修饰的方法必须是被public static void 修饰的方法,即公开、静态、无返回

 

 

 

@AfterClass  同@BeforeClass相反,注解用于修饰测试类中的非测试方法,该方法将在其所属测试类中所有测试方法执行完成后被运行,且只运行一次,可用于做一些测试后续操作,比如断开数据库连接,关闭文件等。

 

注意:@AfterClass修饰的方法必须是被public static void 修饰的方法,即公开、静态、无返回

 

 

 

@Before 注解用于修饰测试类中的非测试方法, 该方法会在其所属测试类中的每一个测试方法运行前运行一次

 

与@BeforeClass的区别在于,@Before不止运行一次,它会在每个测试方法运行之前都运行一次。主要用于为单个测试方法做一些基础的测试准备工作。

 

注意:@Before修饰的方法必须是被public void 修饰的方法,即公开、无返回,但不能是被static修饰的

 

 

 

@After:用于修饰测试类中的非测试方法, 同@Before相反,该方法会在其所属测试类中的每一个测试方法执行完后都运行一次

 

注意:@After修饰的方法必须是被public void 修饰的方法,即公开、无返回,但不能是被static修饰的

 

 

 

@ignore    注释掉一个测试方法或一个类,被注释的方法或类,不会被执行;

 

 

 

4. 运行环境配置

maven配置

确保安装了java jdk并正确设置了JAVA_HOME

下载bin.zip压缩包,解压到目标路径(例中 D:\Program Files\apache-maven-3.5.4\

),设置MAVEN_HOME及Path环境变量,如下

 


 

 

cmd输入mvn -v测试

 


 

 

Eclipse maven运行环境配置

如图,Window - Preferences - Maven -User Settings,Browse指定maven配置文件所在路径

 


 

更新项目

为了解决项目jar包依赖之类的问题,更新项目,右键项目根目录 - Maven - Update Project

 



 

 

如下图,默认已经选中了工程项目,默认选项配置的基础上,勾选上“Force Update of Snapshots/Releases”,OK提交

 

 

目录
相关文章
|
30天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
26 1
|
1月前
|
IDE Java 测试技术
Junit 单元测试
JUnit是Java常用的单元测试框架,简化了测试用例的编写和执行。其特点包括简单注解、自动化测试、可扩展性、灵活性及与IDE的集成。使用方法涉及创建测试类、利用注解如@Test、@BeforeEach等管理测试生命周期,以及使用各种断言方法验证结果。此外,JUnit支持参数化测试以覆盖更多输入组合,并能与Maven、Gradle等构建工具集成,提升测试效率和项目管理。
38 1
|
16天前
|
Java 测试技术
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
19 0
|
15天前
|
Java 测试技术 程序员
junit单元测试
junit单元测试
|
Java 测试技术
Java 中的单元测试和集成测试策略
【4月更文挑战第19天】本文探讨了Java开发中的单元测试和集成测试。单元测试专注于单一类或方法的功能验证,使用测试框架如JUnit,强调独立性、高覆盖率和及时更新测试用例。集成测试则验证模块间交互,通过逐步集成或模拟对象来检测系统整体功能。两者相辅相成,确保软件质量和降低修复成本。
|
12天前
|
缓存 自动驾驶 测试技术
如何进行有效的Apollo测试:单元测试和集成测试指南
如何进行有效的Apollo测试:单元测试和集成测试指南
40 13
|
15天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出"验证成功",否则输出"验证失败"。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
1月前
|
测试技术 数据库 Python
python测试代码(二)
python测试代码(二)
19 0
|
1月前
|
XML Java 测试技术
TestNG 与 JUnit 测试框架:哪个更好?
【2月更文挑战第16天】
46 1
TestNG 与 JUnit 测试框架:哪个更好?
|
1月前
|
Java 测试技术
单元测试编写可测试代码
单元测试编写可测试代码
19 2