用Junit写单元测试用例

本文详细介绍了如何使用Junit进行单元测试,包括测试用例的创建、断言的使用以及测试套件的组织,旨在帮助开发者提升代码质量。

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

要使用JUnit框架,首先要引入import org.junit.*;其中包括大多数可能是用到的库函数
还有一个经常和junit一起使用的库函数,import org.junit.Assert.*;
在测试类中,并不是每个方法都用于测试,所以可以使用“注解”@来表明哪些是测试方法

@Test 表明这是一个测试方法
对于方法的声明:名字不限制,但是返回值必须是void,并且不能有任何参数
@Test在包org.junit.Test中
如果要运行该测试类,选择该文件,右击选择Run As ->JUnit Test即可

@Test属性timeout来完成限时测试
对于那些逻辑很复杂,循环嵌套比较深,有可能出现死循环的程序
需要采取一定预防措施
给这个测试函数设定一个预期的执行时间,超过这个时间,就会被系统强行终止
并且输出函数结束原因是因为超时
@Test(timeout=2000)时间为2000毫秒即2秒

@Test的属性expected来监控测试方法中可能会抛出的异常
如果你觉得这个函数应该抛出异常,但是它没有抛出,说明有bug
@Test(expected=java.lang.ArithmeticException.class)


在测试函数前面加上@Ignore表示该测试方法暂时被忽略
@Ignore
@Test


@Before和@After完成前置工作和后置工作
前置工作是指测试方法在运行之前需要做的一些准备工作,例如数据库的连接,文件的加载,输入数据的准备
后置工作是指测试方法运行之后要做的事情,例如释放数据库连接,输入输出流的关闭
而@Before和@After是在org.junit,Before 和org.junit.After之中,使用之前要将其引入

@BeforeClass 和@AfterClass 来完成一次前置工作和后置工作
例如测试之前读取文件,如果每次测试都要打开文件进行读写,会非常耗时
所以可以在测试一开始读取一次,在所有测试结束之后释放文件
每个测试类只能有一个方法被标注为@BeforeClass 和@AfterClass 
并且类型为public static
@BeforeClass 和@AfterClass在org.junit.BeforeClass和org.junit,AfterClass中

Junit 为我们提供了Assert方法
在org.junit.Assert中
在该类中有方法
assertEquals(expected,actual)
验证expected和actual是一样的,如果是一样的,测试通过,否则测试失败
assertEquals(expected,actual,tolerance) tolerance代表偏差值
assertTrue(boolean condition)验证condition的值是true
assertFalse(boolean condition)
assertNotNull(Object obj)
assertSame(expected ,actual)验证是同一个对象,即指向同一个对象
assertNotSame(expected,actual)
上面的每一个方法,都有一个重载的方法,可以在前面加一个string类型的参数
表示如果验证失败,将用这个字符串作为失败的结果报告
fail()再不检查任何条件的情况下使得断言失败
Assert,fail()加载期望中不可能到达的地方,一旦到达,表示测试失败


Junit框架是通过Runner来运行代码
他们负责调用你的测试代码
如果没有指定哪个Runner,系统会自动使用默认Runner来运行你的代码
如果指定了,如下
import org.junit.runner.RunWith;
import org.junit.runner.JUnit4;
@RunWith(JUnit4.class)
为什么junit没有main()方法就能运行?
其实在org.junit.runner包下,有个JUnitCore.class,其中有一个标准的main方法,是Junit入口函数


junit中基础测试大概就这些了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值