junit

Java高级特性 第11节 JUnit 3.x和JUnit 4.x测试框架

点点圈 提交于 2020-04-30 03:21:29
一、软件测试   1.软件测试的概念及分类   软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度 、完全度和质量的软件过程。   软件测试过程:       2.软件测试的分类   按是否关心软件内部结构和具体实现角度来分: 黑盒测试(Black-box Testing)   黑盒测试也称功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据。 白盒测试(White-box Testing)   白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒指的打开盒子,去研究里面的源代码和程序结果。 灰盒测试(Gray-Box Testing)   灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。   从软件开发过程的阶段,可分为: 单元测试(Unit Testing)   单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。Findyou又称为模块测试 测试阶段:编码后 测试对象:最小模块 测试人员:白盒测试工程师或开发工程师

【IDEA】单元测试:项目中引入JUnit测试框架+Mock简单了解

风格不统一 提交于 2020-04-30 03:21:15
一、Junit 使用和说明: 参考:单元测试第三弹——使用JUnit进行单元测试-HollisChuang's Blog http://www.hollischuang.com/archives/1760 1.1 主要内容 如何使用IDEA上手JUnit,以及如何简单测试。 JUnit中的Assert的方法,一共6个:assertEquals,assertFalse,assertNotNull,assertNull,assertTrue,fail JUnit中的注解,一共6个:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass 总的来说,对于Junit的理解,这一篇文章就能掌握基本使用了。 1.2 实践说明以及注意事项: 一般对于IDEA来说,创建的项目中已经自动导入了 Junit 的Jar,如果没有,自行在pom文件中导入即可; IDEA如果想运行单元测试,好像必须把单元测试所在的根目录标记为 Test Resource Root才可以。标记之后,在方法前加上 @Test 注解之后,方法体里右键,就会有运行该方法的选项。 如果想要运行整个单元测试类中的所有方法,请不要把鼠标放在 @Test 注解的方法内部右击鼠标。 这里说明一下:一般的maven项目中,会在src/main下面有两个目录,java和test

Demo002 IDEA中Junit单元测试的使用(初级篇)

你说的曾经没有我的故事 提交于 2020-04-30 03:20:59
推荐JUnit视频教程: JUnit—Java单元测试必备工具 。 1.基本理论 1.1 单元测试 单元测试又称模块测试,属于白盒测试,是最小单位的测试。模块分为程序模块和功能模块。功能模块指实现了一个完整功能的模块(单元),一个完整的程序单元具备输入、加工和输出三个环节。而且每个程序单元都应该有正规的规格说明,使之对其输入、加工和输出的关系做出名明确的描述。 JUnit是一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的 软件 如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 1.2 什么是Junit ①JUnit是用于编写可复用测试集的简单框架,是xUnit的一个子集。xUnit是一套基于测试驱动开发的测试框架,有PythonUnit、CppUnit、JUnit等。 ②Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。 ③多数Java的开发环境都已经集成了JUnit作为单元测试的工具,比如IDEA,Eclipse等等。 ④JUnit官网: Junit 1.3 为什么要使用单元测试

白盒测试笔记之:Junit 单元测试以及测试覆盖率

前提是你 提交于 2020-04-30 02:37:40
单元测试: 单元测试是从代码层面验证代码的正确性。 一般考虑接口中的数据结构是否正确,变量的临界条件,如空字符串,空集合等。 ​ Junit入门 参考: Junit 入门教程: https://www.cnblogs.com/ysocean/p/6889906.html ​ 通过这个案例,应能直观了解到junit是干嘛的,并能自己跑一个实例了。 这个案例也说清楚了做单元测试是不是一定要用junit了。Junit给我们提供了一个非常方便的单元测试框架。 ​ 单元测试覆盖率 跑单元测试的时候,还需要确保每一行代码,每一个分支都经过测试,那么就需要观察代码测试覆盖率。 代码覆盖率高不能说明代码质量高,但代码覆盖率低,说明代码可能有废弃代码,代码逻辑可能关系混乱。 一般要求90%或95%以上。 ​ Eclipse+Junit可以直接观察简单的代码覆盖率,在运行的时候,选择 Coverage As 即可 参考: https://blog.csdn.net/qq_19246031/article/details/82949399 可以看到效果如下: 结果说明如下: Coverage: 代码测试覆盖率 Covered Instructions:覆盖到的指令行 Missed Instructions:没覆盖的指令行 Total Instructions:总指令行数 当然

单元测试(Junit+Mock+代码覆盖率)

被刻印的时光 ゝ 提交于 2020-04-30 00:33:06
单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的。 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码 修复 、 改进 或 重构 之后的正确性。 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性。 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 比如对于Math.sqrt,给出n^2-1,和n^2+1的边界 空集合 对集合的大小应用“数值变量”的边界 调整次序 :升序、降序 引用“字符变量”的边界 空字符串 对字符串长度应用“数值变量”的边界 主要边界 :最小值,最大值,无穷大(对于DOUBLE等) 溢出边界 (期望异常或拒绝服务):最小值-1,最大值+1 临近边界 :最小值+1,最大值-1 变量没有赋值 (即为NULL) 变量是数值(或字符) 变量是字符串 变量是集合 变量有规律 所有独立执行通路测试:保证每一条代码,每个分支都经过测试 Cobertura:语句覆盖 Emma: Eclipse插件Eclemma 语句覆盖 :保证每一个语句都执行到了 判定覆盖(分支覆盖):保证每一个分支都执行到 条件覆盖:保证每一个条件都覆盖到true和false(即if、while中的条件语句) 路径覆盖:保证每一个路径都覆盖到

面向对象程序设计第四单元总结(UML系列)

微笑、不失礼 提交于 2020-04-29 21:24:55
2019面向对象程序设计第四单元总结 前言 ​ 本单元是面向对象程序设计课程的最后一个单元了,本单元是和UML模型相关,也就是说,我们需要正确理解UML模型的基础上,对构建出的UML模型进行解析,但是我们实际上要理解的是UML建模的理念,即 类模型定义系统的解决方案:使用“这些类”来实现相应的需求 状态模型定义类的行为机制:“这个类”将按照这样的行为逻辑运行 交互模型定义类之间的协作机制:“这些类”在一起完成“这个业务” 在此基础上,对UML的模型就有了一个整体的把握,编码起来就不会很困难了。 1.作业架构分析 1.1 需求分析 ​ 本单元作业要求对于给定的UML模型(由starUML建立),需要能够正确地将其中的UMLElement进行归类,并根据规则建立起联系,在第二次作业中,如果模型不符合有效性检查,则输出错误信息,否则,输出正确的查询结果。 1.2 第一次作业 ​ 第一次作业其实如果理解了UML模型的话,建立起架构其实不是很困难,就是定义和我们Java中的类相似的数据结构,类中包含方法,方法中包含参数,然后父类、子类以及接口之间要建立起相应的关系。 类图 ​ ​ 第一次作业的架构思路还是比较清晰的,针对所有的UMLClass,构建一个MyClassContainer类,保存所有Class和Interface,然后再构建MyClass 和 MyInterface类

Java注解Annotation与自定义注解详解

无人久伴 提交于 2020-04-29 17:31:34
文章来源: http://www.jb51.net/article/136853.htm 一:Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解。 下面列举开发中常见的注解 @Override:用于标识该方法继承自超类,当父类的方法被删除或修改了,编译器会提示错误信息(我们最经常看到的toString()方法上总能看到这货) @Deprecated:表示该类或者该方法已经不推荐使用,已经过期了,如果用户还是要使用,会生成编译的警告 @SuppressWarnings:用于忽略的编译器警告信息 Junit测试:@Test Spring的一些注解:@Controller、@RequestMapping、@RequestParam、@ResponseBody、@Service、@Component、@Repository、@Resource、@Autowire Java验证的注解:@NotNull、@Email 下面看一下注解Override.java的庐山真面目: @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @ interface Override { } 二:Java注解基本知识 1

SpringBoot+RabbitMQ学习笔记(一)

拈花ヽ惹草 提交于 2020-04-29 12:36:15
一丶添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 配置文件:application.properties server.port=8883 spring.application.name =hello- world spring.rabbitmq.host = localhost spring.rabbitmq.port =5672 spring.rabbitmq.username = guest spring.rabbitmq.password =guest

SpringBoot+RabbitMQ学习笔记(二)使用RabbitMQ的三种交换器之Direct

穿精又带淫゛_ 提交于 2020-04-29 12:35:58
一丶简介 Direct Exchange 处理路由键。需要将一个队列绑定到交换器上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换器上要求路由键 “test”,则只有被标记为“test”的消息才被转发,不会转发test.aaa,也不会转发dog.123,只会转发test。 业务场景,系统日志处理场景: 1.微服务产生日志,交给日志服务器处理。 2.日志服务器一共有4个服务,分别问DEBUG、INFO、WARN、ERROR(这里只写两个INFO和ERROR)。 3.服务之间的通信采用Direct(发布订阅)。 二 丶配置文件 我分别创建了两个项目,一个作为生产者来发送日志,一个作为消费者来接收日志。 生产者配置: 1 server.port=8883 2 3 spring.application.name=hello- world 4 5 spring.rabbitmq.host= localhost 6 spring.rabbitmq.port=5672 7 spring.rabbitmq.username= guest 8 spring.rabbitmq.password= guest 9 10 #设置交换器名称 11 mq.config.exchange= log.direct 12 #info的路由键 13 mq.config.queue

Junit assert OR condition in my test case

那年仲夏 提交于 2020-04-29 07:59:17
问题 In my test case, I get an integer value: int val = getXXX(); Then, I would like to check if val either equals to 3 or equals to 5 which is OK in either case. So, I did: assertTrue(val == 3 || val==5); I run my test, the log shows val is 5, but my above assertion code failed with AssertionFailedError . Seems I can not use assertTrue(...) in this way, then, how to check true for OR condition? 回答1: ive tried to write quick test: @Test public void testName() { int i = 5; junit.framework.Assert