java单元测试
2018-08-26 17:19:50来源:博客园 阅读 ()
1.简介
在日常开发中,我们编写的任何代码都需要经过严谨的测试才可以发布。以往的测试方法都是通过编写一个main函数进行简单的测试,并使用大量的print语句输出结果,这种方法其实是不可取的,它将导致大量的冗余代码在程序中,并且是不利于维护的。因此,业界就提出了单元测试的概念。所谓的单元测试是指对软件中的最小可测试进行检查和验证。(最小单元可以是一个方法,也可以是一个类,根据具体的场景进行定义)。在java中通常使用Junit工具来完成。
2.使用
将下载的Junit的jar文件导入到项目中即可。接下来就可以编写单元测试类,测试类也有相应的命名规范。通常以XxxTest方式来命名,Xxx就是你要测试的类名。测试类中编写的任何测试方法是不需要返回值得。测试方法名规范testXxx(),Xxx表示目标类中的方法名。
2.1 Junit的注解
注解 | 说明 |
---|---|
@Test | 标注在方法上,表示当前方法是一个测试方法 |
@Before | 标注在方法上,用于在执行任何单元测试之前先执行的方法 |
@After | 标注在方法上,用于在执行任何单元测之后再执行的方法 |
@BeforeClass | 标注在静态方法上,在测试方法之前先执行,且执行一次。通常可用于初始化操作 |
@AfterClass | 标注在静态方法上,在测试方法之前先执行,且执行一次。通常可用于初始化操作 |
@Ignore | 标注在方法上,表示忽略当前的此方法 |
public class UserDaoTest { ? @BeforeClass public static void before1(){ System.out.println("before1"); } ? @AfterClass public static void after1(){ System.out.println("after1"); } ? @Before public void before2(){ System.out.println("before2"); } ? @After public void after2(){ System.out.println("after2"); } ? @Test public void testSaveUser(){ UserDao dao = new UserDao(); dao.saveUser(); } ? @Test //@Ignore //忽略当前的此方法 public void testFindUserById(){ UserDao dao = new UserDao(); dao.findUserById(); } }
2.2 使用断言(Assert)
所谓断言,就是将预期的条件或者表达式参与测试中,判定测试的结果是否达到预期想要的结果。
例子:
import edu.nf.service.UserService; import org.junit.Test; //使用静态导入(导入的是某个静态方法) import static org.junit.Assert.*; ? ? public class UserServiceTest { ? @Test public void testFindUserName(){ UserService service = new UserService(); //使用断言进行测试 //第一个参数是此预期返回的结果,第二个是目标方法的返回值 //如果两个值相等,则测试通过 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 class SuiteTest { } ?
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:SpringBoot初接触
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash