业务测试(使用 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 设计模式已经成功完成。

相关文章
|
3月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
27天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
124 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
14天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
20 5
|
27天前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
19 2
|
27天前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
49 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
2月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
69 6
|
3月前
|
测试技术
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
43 2
|
3月前
|
Java 测试技术 Maven
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
178 1
|
3月前
|
测试技术
如何使用 JUnit 测试方法是否存在异常
【8月更文挑战第22天】
40 0
|
3月前
|
Java 测试技术 Maven
Junit单元测试 @Test的使用教程
这篇文章是一个关于Junit单元测试中`@Test`注解使用的教程,包括在Maven项目中添加Junit依赖、编写带有@Test注解的测试方法,以及解决@Test注解不生效的常见问题。