java 单元测试实例_java单元测试实例讲解

本文介绍了Java单元测试的重要性,推荐使用Junit工具进行测试。讲解了Junit的注解如@Test、@Before等,以及如何编写测试方法和使用断言进行结果验证。还提到了测试套件的概念,展示如何组织多个测试类进行批量测试。
摘要由CSDN通过智能技术生成

单元测试

1.简介

在日常开发中,我们编写的任何代码都需要经过严谨的测试才可以发布。以往的测试方法都是通过编写一个main函数进行简单的测试,并使用大量的print语句输出结果,这种方法其实是不可取的,它将导致大量的冗余代码在程序中,并且是不利于维护的。因此,业界就提出了单元测试的概念。所谓的单元测试是指对软件中的最小可测试进行检查和验证。(最小单元可以是一个方法,也可以是一个类,根据具体的场景进行定义)。在java中通常使用Junit工具来完成。

2.使用

将下载的Junit的jar文件导入到项目中即可。接下来就可以编写单元测试类,测试类也有相应的命名规范。通常以XxxTest方式来命名,Xxx就是你要测试的类名。测试类中编写的任何测试方法是不需要返回值得。测试方法名规范testXxx(),Xxx表示目标类中的方法名。

abb3038719359b3476a730c7c73441f0.png

2.1 Junit的注解

注解

说明

@Test

标注在方法上,表示当前方法是一个测试方法

@Before

标注在方法上,用于在执行任何单元测试之前先执行的方法

@After

标注在方法上,用于在执行任何单元测之后再执行的方法

@BeforeClass

标注在静态方法上,在测试方法之前先执行,且执行一次。通常可用于初始化操作

@AfterClass

标注在静态方法上,在测试方法之前先执行,且执行一次。通常可用于初始化操作

@Ignore

标注在方法上,表示忽略当前的此方法

例子:

public classUserDaoTest {

@BeforeClasspublic static voidbefore1(){

System.out.println("before1");

}

@AfterClasspublic static voidafter1(){

System.out.println("after1");

}

@Beforepublic voidbefore2(){

System.out.println("before2");

}

@Afterpublic voidafter2(){

System.out.println("after2");

}

@Testpublic voidtestSaveUser(){

UserDao dao= newUserDao();

dao.saveUser();

}

@Test//@Ignore//忽略当前的此方法

public voidtestFindUserById(){

UserDao dao= newUserDao();

dao.findUserById();

}

}

2.2 使用断言(Assert)

所谓断言,就是将预期的条件或者表达式参与测试中,判定测试的结果是否达到预期想要的结果。

例子:

importedu.nf.service.UserService;importorg.junit.Test;//使用静态导入(导入的是某个静态方法)

import static org.junit.Assert.*;

​public classUserServiceTest {

@Testpublic voidtestFindUserName(){

UserService service= newUserService();//使用断言进行测试//第一个参数是此预期返回的结果,第二个是目标方法的返回值//如果两个值相等,则测试通过

assertEquals("hh",service.findUserName(1001));

}

}

Assert类中提供了众多的Assert方法来进行比较,而这些方法的返回值都是void,如果判定结果不用通过则引发相应的异常信息。常用断言方法如下:

方法

说明

assertEquals

判定两个值是否相等

assertNotNull

判定结果不允许为空

assertNull

判定结果为空

assertSame

判定两个对象是否是同一个引用

assertArrayEquals

判定两个数组的内容是否相等

...

...

2.3 测试套件

所谓的测试套件,就是将一系列的单元测试类集合中在一起进行批量的单元测试。

测试套件需要的注解:

注解

说明

@RunWith

标注在类上,表示当前类是一个测试套件的运行器

@SuiteClasses

标注在类上,用于集中所有的单元测试类的class

例子:

@RunWith(Suite.class)

@Suite.SuiteClasses({UserDaoTest.class, UserServiceTest.class})public classSuiteTest {

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值