`
l4432848
  • 浏览: 253415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaEE——Junit

    博客分类:
  • java
 
阅读更多

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

Junit

Junit又名单元测试,Junit是用来测试Java代码的,使用Junit测试有什么特别的地方吗?Junit的好处之一,落实在单元两字上。可以对单元进行全方位测试。

什么是单元?单元就是模块。

单元小一点可以指一个类,一个类完成一件事件。

单元在小一点,可以指一个类中的方法。一个方法完成一个功能,多个方法组成一个类。

我们要对这一个个单元,一个个模块进行全方位测试,我们就可以使用Junit。Junit提供了这样的功能:分块全方位测试。

例:

image

这里有一个方法,给年龄赋值。先判断年龄是否符合要求,如果不符合,则抛出异常。如果符合则赋值给年龄。

image

使用Junit对前面写的年龄方法进行测试

@Test注解,告诉别人我这是一个测试用例,待会给我运行这个测试用例

因为一个方法写在类中,又不是main方法,光一个方法是不会被运行的。写上@Test表示这个Junit测试用例。注解配置描述着:这是一个测试用例,待会会来调用此注解下的方法

在第一个测试用例中,我们setAge传入年龄10,这是正常的年龄是不会有错误的。

在第二个测试用例中,我们@Test(expected)表示这个用例会抛出如下错误,如果有抛出我指定的错误,表示测试是通过。如果没有抛错或是抛错但不是我的这个错误,表示测试不通过

在这里就进行了2种测试。一个是正常情况下是否正确,一个是测试参数非法下是否会抛出异常。抛出指定的才通过,否则不通过。

运行结果如下:

image

运行了2个测试用例,都执行成功

如果我将测试抛出异常的方法改为10,年龄正常下,就不抛异常,再看测试用例:

改为10:

image

image

出现了警告,表示这个用例指定的异常没有被抛出。需要抛出异常,才表示正常通过。因为这个用例就是用来测试异常是否被抛出的。

image

当点击类上的运行,是这个测试类下的所有用例全部运行起来,如之前

image

当点击某一个用例的运行,表示只单独运行这一个用例如左下角

这就是全方面测试体现之一:可以对某一个方法,单独拎出来测试。可以对某一个方法,测试他正常运行,还测试他非法访问。不仅测正确,还要测错误。

如果没有用Junit,我们就只能是写一个类,main方法调用进行测试。这样有点不合适,并且测起来也麻烦,使用Junit就可以避免这种问题

在@Test注解,有2个参数可以选填

image

一个是expected,一个是timeout。一个设置方法会抛出异常,一个设置方法执行时间。

查看这个expected,是Class<? extends Trowable>,要求Class并且继承要异常,可以测异常 Timeout是设置这个方法执行的时间,当超过这个时间,表示这个方法超时了,可以做优化

Junit还提供了什么呢?

我们这里有一个MyArrayList类,我们打算测试这个类:

image

这里有这样一个注解@BeforeClass

image

@BeforeClass这个注解的意思是,在运行整个Junit之前,先调用这个方法。等同于初始化 还有这个注解@AfterClass,在运行完毕整个Junit后,调用这个注解下的方法,等同于destroy 还有@Before每次调用Junit案例前,先执行我这个方法 还有@After每次调用完Junit案例后,先执行我这个方法

这里的区别是: @BeforeClass与@AfterClass是在运行Junit框架前后调用,只会调用一次 @Before与@After是在调用用例前后调用,有多少个用例调用多少次

我们什么静态的集合属性,我们这里使用@BeforeClass注解,在执行整个Junit用例开始前,先给集合注入数据,在后面的测试就可以使用集合,就不用填充数据了。

@BeforeClass需要是静态的方法,因为在整个执行前先调用,可能是拿类.方法调用。保证方法先被执行。

测试一:

image

进入Junit调用@BeforeClass注入数据。我们这里addMyArrayList测试: 第0个数据是否是嘻嘻哈哈,第1个数据是否是哈哈嘻嘻,第2个数据是否是哈哈哈哈

Assert Junit提供的操作类,翻译:断言。这个操作类有什么用处呢?它的方法替代我们的一些操作。比如这里判断前后和后面的对象是否一样。就是解决这种事情的。如果符合则表示通过,如果不符合就报错。断言,断论是否OK

Assert提供的方法都是静态的方法:

image

引入静态包,*将Assert下的静态方法全部引入。

静态引包好处是,之前调用:Assert.assertEquals()。现在调用:assertEquals()

判断删除:

image

删除第二个,则就删掉了最后一个哈哈哈哈。assertNull判断第二个是否为null

在添加一个进入,第二个不为null。assertNotNull判断第二个是否不为null

assertEquals判断第一个对象与第二个对象是否一致

删除第一个,那么就由0 1 2变成0 2。那么2为1,则就是哈哈哈哈为1,哈哈嘻嘻被删除。assertEquals判断第二个是否是哈哈哈哈

判断下标越界:

image

测试参数错误,是否为抛出越界错误

判断修改

image

判断修改的地方是否是我们预期的值

这就是Junit测试,对业务块全方位测试。

@Test提供多方面测试。提供的Assert断言减轻了我们以前测试麻烦。

@Ignore

要测试的用例:

image

image

对方法进行测试,按照往常,这样的一测试就报错,因为里面有抛错,Junit也没有指定逻辑会抛出错误

查看测试:

image

对于这个用例,上面划上了蜂窝的图标。也没有报错。为什么会这样呢? 这就是@Ignore的作用了,ignore翻译:忽略。这个注解的意思是:忽略这个用例不执行。所以没报错,因为根本没有执行这个用例,这就是@Ignore的作用,忽略测试用例

@Runwith

这个注解在Spring-TestContext对Spring测试时,会使用到这个注解。在使用Spring测试时有2个注解,一个是@Runwith一个是ContextConfiguration。

@ContextConfiguration的意思是指定application.xml Spring配置文件在哪里,那@Runwith是意思是?

这个注解的意思猜测是运行之前启动这个类。什么意思呢?启动@Runwith指定的类,这样Spring书写的test类就启动了,这样这个test类就会帮我们构建Spring环境。这样我们在test中就可以直接使用,无需手动创建applicationcontext类了。

看来这个@Runwith与@BeforClass的意思是差不多了,是的。不过@BeforClass是在运行测试前调用这个静态方法。而@Runwith是运行测试前运行这个类

查看注解里面的申请:

image

里面要求的是class,类的class管理。要求这个传递的class要继承与Runner类

我们继承这个类,查看要求,这个类是一个抽象类:

image

继承这个抽象类,需要实现2方法,一个是销毁,一个运行。当重写这两个方法后,在运行Junit前应该就是调用run,运行完毕后在调用销毁方法。

但当我们这样写后,报错了,也没有深究。但意思是这个意思,在运行Junit测试前,会调用这个run开始做初始化或是其他操作。

分享到:
评论

相关推荐

    javaEE课后代码——客户管理系统

    为了保证代码的质量和可测试性,项目可能还引入了单元测试框架,如JUnit,以及Mockito等工具进行模拟对象测试。同时,使用Git进行版本控制,便于团队协作和代码回溯。 总之,这个【JavaEE客户管理系统】项目涵盖了...

    JavaEE开发技术与案例教程——刘彦君 课件

    《JavaEE开发技术与案例教程——刘彦君 课件》是刘彦君主编的一份详尽的教学资源,旨在深入浅出地介绍JavaEE技术及其实际应用。JavaEE(Java Platform, Enterprise Edition)是Java平台在企业级开发中的标准,主要...

    JavaEE project with A Classification Approach.zip

    【标题】:“JavaEE项目——基于分类方法” 这个项目标题表明这是一个使用JavaEE技术栈开发的项目,重点在于实现一种分类方法。JavaEE(Java Platform, Enterprise Edition)是Oracle公司提供的一个用于构建企业级...

    javaee项目(手机销售公司)

    【JavaEE项目——手机销售公司】是一个基于JavaEE技术栈的Web应用程序,旨在模拟和管理一个手机销售公司的业务流程。这个项目涵盖了多个重要的IT知识点,包括但不限于以下几点: 1. **JavaEE架构**:JavaEE(Java ...

    基于JavaEE的影评网管理系统_JSP网站设计_SqlServer数据库设计.rar

    本项目——“基于JavaEE的影评网管理系统”,巧妙地结合了JSP(JavaServer Pages)技术和SQLServer数据库,为用户提供了一站式的影评管理解决方案。本文将深入探讨该项目的关键知识点,旨在揭示其设计思路和技术实现...

    JavaEE开发工具-经典稳定版-霓虹灯

    JavaEE开发工具经典稳定版——霓虹灯,指的是Eclipse IDE for Java EE Developers的一个特定版本,Eclipse Neon.2,适用于Windows 64位操作系统。这个版本因其稳定性和丰富的功能集而备受Java开发者青睐,是进行...

    基于javaee的学科竞赛管理系统.zip

    系统开发的核心语言——Java,是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性而闻名。JavaEE则在此基础上,增加了对服务器端应用的支持,包括Web服务、数据访问、事务处理等功能,为开发者...

    学习JavaEE的day19

    你可能接触了EJB的三种类型——Session Beans(会话bean)、Message-driven Beans(消息驱动bean)和Entity Beans(实体bean),了解它们在业务逻辑处理和消息传递中的角色。 5. **JNDI(Java Naming and Directory...

    简历简历简历简历简历简历

    而“工具”可能指的是开发环境(如IntelliJ IDEA, Eclipse)、构建工具(Maven, Gradle)或自动化测试框架(JUnit, TestNG),这些都是JavaEE开发者日常工作中不可或缺的部分。 【压缩包子文件的文件名称】:罗海清...

    JavaEE程序员简历最新版

    * 时间:2013 年 6 月——2014 年 9 月 * 公司:咨元信息技术有限公司 * 部门:软件开发部 * 职位:java 软件工程师 * 所获证书:英语四级、计算机网络工程师四级 四、IT 技能 * 了解使用 Tomcat 服务器的 JSP/...

    50632135002173628_基于JAVAEE项目管理信息化系统设计与实现0515.zip

    【标题】中的“基于JAVAEE项目管理信息化系统设计与实现”揭示了这个压缩包内容的核心——它是一个关于使用JAVA EE技术构建项目管理信息化系统的详细设计方案和实现过程的文档。JAVA EE,全称Java Platform, ...

    基于Springboot的商铺管理系统(有报告) Javaee项目,springboot项目

    《基于Springboot的商铺管理系统——Javaee项目解析》 在当今的互联网开发环境中,Spring Boot以其简洁、快速的开发方式,已经成为Java企业级应用的首选框架。本项目以"基于Springboot的商铺管理系统"为例,深入...

    javaEE通过MVC模式实现注册登入案例的myeclipse工程.zip

    1. **MVC模式**:MVC模式将应用分为三个主要组件——模型(Model)、视图(View)和控制器(Controller)。模型负责处理业务逻辑和数据管理,视图负责显示数据,而控制器接收用户请求并协调模型和视图。 2. **...

    基于SSM的KTV包厢管理系统(有报告) Javaee项目,ssm项目

    本项目——“基于SSM的KTV包厢管理系统”,旨在提供一个集预订、管理和服务于一体的KTV运营平台,充分展示了SSM框架在实际业务场景中的应用。 首先,系统设计上,KTV包厢管理系统涵盖了用户模块、管理员模块和后台...

    轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发电子书1

    此外,书中可能还会涉及一些最佳实践和设计模式,如单例模式、工厂模式等,以及如何使用JUnit进行单元测试,确保代码质量。对于想要提升Java EE开发能力的程序员来说,这本书无疑是一份宝贵的资源。 总的来说,《轻...

    基于SSM的网上试卷管理系统 Javaee项目

    《基于SSM的网上试卷管理系统——JavaEE项目详解》 在现代教育领域,信息化管理已成为提升教学效率的重要手段。本文将深入探讨一个基于SSM(Spring、SpringMVC、MyBatis)框架的网上试卷管理系统,它充分利用了...

    xml入门项目——通讯录系统

    xml入门小项目——通讯录系统 系统特点: 1、系统主程序入口MainProgram.java 2、实现通讯录中联系人的增删改查功能,联系人数据保存在xml文档中。系统xml文档通过dom4j技术创建和解析。 3、涉及JavaSE中的集合、...

    基于Springboot的微乐校园管理系统(有报告) Javaee项目,springboot项目

    《基于Springboot的微乐校园管理系统(有报告)——Javaee项目解析》 Springboot作为当前Java开发领域中备受推崇的框架,以其简洁、高效、快速启动的特点深受开发者喜爱。在“微乐校园”这个Javaee项目中,我们看到...

    轻量级Java+EE企业应用实战——Struts+2+Spring+Hibernate整合开发电子书3.pdf

    《轻量级Java+EE企业应用实战——Struts 2 + Spring + Hibernate整合开发》是针对Java企业级应用开发的一本实战指南,旨在帮助开发者掌握使用Struts 2、Spring和Hibernate三大框架进行高效集成开发的技术与技巧。...

    java2ee项目原文件

    06 Web开发实例——学生成绩管理系统的改进 07 Struts开发实例----在线留言板 08 Hibernate开发实例----图书管理系统 09 JUnit开发实例----图书管理系统的单元测试 10 AOP开发实例 12 综合实例----光盘...

Global site tag (gtag.js) - Google Analytics