业务测试(使用 Junit 测试) | 学习笔记

简介: 简介:快速学习业务测试(使用 Junit 测试)

开发者学堂课程【DAO 开发实战业务分析:业务测试(使用 Junit 测试)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/399/detail/5170


业务测试(使用 Junit 测试)

 

内容介绍

一、junit 测试的重要性

二、junit 测试的步骤

三、总结


一、junit 测试的重要性

如果要进行业务测试,所有的开发之中都一定会通过 Junit 测试组件负责完成。


二、junit 测试的步骤

1、选中要测试的业务接口:

在整个过程之中,要求在图中蓝色区域先选中要测试的代码,因为所有的业务方法的名称都在 service 接口中。

2、创建 junit 测试用例:

image.png

在左上角新建一个 Junit ,选择测试 junit 的测试用例 Test Case,再选择下一步。

3、将所有的 junit 测试类都保存在:cn.mldn.oracle.test.junit 包下

image.png

关键性的问题在于如果想要更好的进行测试,选择 JUnit4 而不要选择 Junit3,因为存在大量数据且要进行一个先增加再进行取得再删除再修改的测试,要考虑到测试顺序的问题。

4、选择要进行测试的方法

image.png

全部选择,所有的方法都会进行测试处理。

5、会询问用户是否要将 junit 测试包配置到“Build Path”之中

image.png

必须选是,否则单独去解释测试包过于麻烦

6、为了保证进行测试的顺序,junit4 里面提供有一个注解,可以根据方法名称定义执行的顺序。

import org.junit.runners.MethodSorters;代码下跟上

@FixMethodOrder(MethodSorters.NAME_ASCENDING)即按照名称升序。名称升序即为像 testAdd、testUpdate 等字母升序,如做以下测试来进行验证先后执行的问题,在 public void testAdd(){跟上System.out.println(“*****ADD******“);,在public void testRemove(){

跟上System.out.println(“*****REMOVE******“):,在public void testGet(){跟上System.out.println(“*****GET******“);,在public void testList(){

跟上System.out.println(“*****LIST******“);,在public void testListStringStringIntInt(){

跟上System.out.println(“*****LIST4******“);,

然后得出执行结果是按照顺序执行。如果分不清楚顺序就按照应有的顺序在 test 后加上对应的数字进行执行。

然后在整个测试过程中,有一个前提条件是主键与电话不能重复,在public class IMemberServiceTest {下跟上private static String mid ;一个值,

再跟上private static String phone ;一个值,再跟上static {   // 静态块,跟上Random rand = new Random() ;

再跟上int temp = rand .nextInt() 来进行取值。假设跟上1000,即int temp = rand .nextInt(1000 

跟上 mid = ”测试ID  + temp ;,再跟上 mid = ”测试 PHONE  + temp ;,

这样就可以保证在整个过程中 static 执行一次操作后都能取得一个 id 和一个 phone。

接下来进行测试,在 Member mem = new Member() ;后跟上 mem.setMid(mid) ;

接下来再跟上 mem.setPhone(phone) ;,再跟上 mem.setAge(10) ;

接下来再跟上 mem.setBirthday(new Date()) ;,因为其他字段都不是起决定性因素的字段,但其他字段都要求把值设置再跟上 mem.setName(“啊黄啊黄“) ;,

再跟上 mem.setNote(“不是人“) ;,找到一个业务层接口对象,在private static String phone 

后跟上 private static IMemebrService service;,然后在 mid = ”测试 PHONE  + temp ;后跟上 service =

ServiceFactory.getInstance(MemberServiceImpl.class);进行识别,后面的调查测试则是通过在mem.setNote(“不是人“) ;

后跟上TestCase.assertTrue(service.add(mem));,但现在存在一个对象数据库连接取得问题,

所以要将

ServiceFactory.getInstance(MemberServiceImpl.class);放在 public void testAdd(){下面,数据库连接在每一次创建service子类的时候才会创建一次连接,所以如果放在上面的话下面将无法取值。

因此如果测试 add 返回的结果为 true,则说明测试通过。接下来要进行修改,mid不变,将年龄改为30岁,“啊黄啊黄”改为“不黄”,“不是人”改为“cai guai”,

TestCase.assertTrue(service.add(mem));的 add 改为 edit 后,如果返回的结果是true也是正确的。其次get如果返回的值不是空则是正确的,在 get 后跟上 TestCase.assertNotNull(object);,将业务层对象运用到此处,将原代码跟上 TestCase.assertNotNull(service.get(mid));,仍旧用同一个 id 进行测试。

而在 list 中如果取到的集合大于零则表示成功,所以在list后跟上TestCase.assertTrue(service.list().size() > 0;,则表示数据取得。而在 public void testListIntInt(){中也应该大于零,即

TestCase.assertTrue(service.list(1,10).size() > 0;,而 service.list 的返回结果为

Map<String,Object>map = service.list();,就需要先接收值,跟上long count =(Longmap.get(“memberCount”);,然后要判断count 的值是否大于零并且要求判断 all.size()的值大于零,即在long count =(Longmap.get(“memberCount”);后跟上List<Member> all =(List<Member>) map.get(“allMembers”),在此基础之上,如果满足TestCase.assertTrue(count > 0 && all.size() > 0);,则可以进行数据查询。在public void test6ListStringStringIntInt(){中,则跟上

Map<String,Object>map = service.list(“name”,””,1,10);,

写完测试后可以一起测试也可以分开测试,但分开测试要注意 id 的变化,因为每一次执行都要生成一个新的 mid。测试完成之后需要将数据删除,则跟上 Set<String> set = new HashSet< String >() ;,跟上 set.add(mid) ,

跟上 TestCase.assertTrue(service.remove(ids));,再用set进行删除后再次进行测试则测试通过。如果测试都通过,返回的结果都为绿色,则表示这个业务在当前的环境下已经正常通过,可以交给其他开发者进行使用。以后的项目开发都要求编写 junit 测试。

三、总结

一个最基础的 DAO 设计模式已经成功完成。

相关文章
|
1月前
|
IDE Java 测试技术
Junit 单元测试
JUnit是Java常用的单元测试框架,简化了测试用例的编写和执行。其特点包括简单注解、自动化测试、可扩展性、灵活性及与IDE的集成。使用方法涉及创建测试类、利用注解如@Test、@BeforeEach等管理测试生命周期,以及使用各种断言方法验证结果。此外,JUnit支持参数化测试以覆盖更多输入组合,并能与Maven、Gradle等构建工具集成,提升测试效率和项目管理。
38 1
|
3月前
|
Java 测试技术
JUnit 4 单元测试
单元测试是软件开发中必不可少的一环,但是在平常开发中往往因为项目周期紧,工作量大而被选择忽略,这样往往导致软件问题层出不穷。 线上出现的不少问题其实在有单元测试的情况下就可以及时发现和处理,因此培养自己在日常开发中写单元测试的能力是很有必要的。无论是对自己的编码能力的提高,还是项目质量的提升,都是大有好处,本文将介绍 Java 单元测试框架 JUnit 4 的基础认识和使用来编写单元测试,希望同样对你有所帮助。
|
5月前
|
Java 测试技术 数据库
Spring 单元测试(Junit)
Spring 单元测试(Junit)
|
4月前
|
测试技术
Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理
Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理
88 0
|
16天前
|
Java 测试技术 程序员
junit单元测试
junit单元测试
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
203 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
1月前
|
XML Java 测试技术
TestNG 与 JUnit 测试框架:哪个更好?
【2月更文挑战第16天】
46 1
TestNG 与 JUnit 测试框架:哪个更好?
|
2月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
|
6月前
|
测试技术
Junit单元测试为什么不能有返回值?
Junit单元测试为什么不能有返回值?
|
2月前
|
运维 Java 测试技术
spring 单元测试 Junit
spring 单元测试 Junit
43 2

热门文章

最新文章