
单元测试
文章平均质量分 87
adrninistrat0r
这个作者很懒,什么都没留下…
展开
-
Java单元测试实践-28.spring-test数据库操作自动回滚处理
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. spring-test数据库操作自动回滚处理在进行单元测试时,可以使用spring-test提供的支持,使执行单元测试时的数据库操作使用事务,在测试方法结束时可以回滚数据库操作。通过上述方法,可以使执行单元测试时不对数据库数据产生影响,也存在一些例外场景需要具体分析。1.1. spring-test提供的事务相关类原创 2020-08-16 19:54:55 · 3493 阅读 · 0 评论 -
Java单元测试实践-27.JPA Entity生成工具Java组件增强版
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 前言以下提供了根据数据库表生成JPA Entity的Java组件,项目地址为 https://github.com/Adrninistrator/jpa-entity-generator-enhance ,在原始项目 https://github.com/smartnews/jpa-entity-generator 基原创 2020-08-16 19:52:07 · 566 阅读 · 0 评论 -
Java单元测试实践-26.使用JPA自动创建数据库表
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 使用JPA自动创建数据库表以上在单元测试中使用H2数据库的方法,需要在连接数据库时指定数据库建表语句,建表语句需要从数据库服务器获取,由于不同的数据库建表语句存在一些差别,可能并不能直接在H2数据库中使用(如前文所述MySQL建表语句中H2数据库中存在部分不支持),不是最佳的选择。可以在单元测试中使用JPA,利用JP原创 2020-08-16 19:50:51 · 2780 阅读 · 0 评论 -
Java单元测试实践-21.使用Gradle执行单元测试
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 使用Gradle执行单元测试当需要使单元测试执行支持自动化时,需要选择合适的构建工具,以下说明如何使用Gradle支持单元测试自动化执行。1.1. Gradle test任务参考 https://docs.gradle.org/current/userguide/java_testing.html#sec:java原创 2020-08-15 22:19:42 · 11260 阅读 · 0 评论 -
Java单元测试实践-20.Mock相关总结
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 单元测试Mock代码编写建议按场景编写单元测试在编写单元测试代码前,建议先详细整理对应交易的场景,可以使用思维导图或其他方式,再以此为基础,选择需要编写单元测试的场景,尽量覆盖全部的场景。像业务代码一样编写单元测试代码在编写单元测试代码时,应该像业务代码一样,对Mock代码进行封装,合理使用继承与多态,划原创 2020-08-15 22:18:31 · 2355 阅读 · 0 评论 -
Java单元测试实践-25.在本地使用H2数据库进行单元测试
使用CI/CD可以实现按照要求自动执行单元测试,例如定期执行某个项目的单元测试。当在CI服务器执行单元测试时,CI服务器有可能无法访问数据库服务器。可以使用H2数据库,使执行单元测试时不依赖数据库服务器。使用H2数据库执行单元测试的其他优势是,不会在数据库服务器中产生脏数据。以下说明在单元测试中如何在本地使用H2数据库,摆脱对数据库服务器的依赖,帮助单元测试执行支持自动化。原创 2020-08-15 22:13:15 · 10595 阅读 · 1 评论 -
Java单元测试实践-24.Gradle执行test任务卡死问题解决
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Gradle执行test任务卡死问题解决1.1. test任务卡死问题现象使用Gradle test任务执行单元测试时,执行一段时间后卡死,通过testLogging参数指定的测试日志查看,执行了几十个测试类后不再继续执行。1.1.1. 无效的解决方法1.1.2. 与Gradle版本的关系使用Gradle 4.原创 2020-08-15 22:12:03 · 3170 阅读 · 0 评论 -
Java单元测试实践-23.Gradle单元测试日志、报告与JaCoCo代码覆盖率
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Gradle测试日志、报告与覆盖率1.1. 测试日志参考 https://docs.gradle.org/current/userguide/java_testing.html#sec:test_execution ,或 https://docs.gradle.org/current/dsl/org.gradle.a原创 2020-08-15 22:10:42 · 3915 阅读 · 0 评论 -
Java单元测试实践-22.Gradle资源文件与配置参数动态替换
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Gradle资源文件与配置参数动态替换1.1. main模块与test模块资源文件Gradle任务processResources、processTestResources分别用于复制main模块与test模块的资源文件。1.1.1. 输入输出文件在processResources、processTestReso原创 2020-08-15 22:09:34 · 2308 阅读 · 0 评论 -
Java单元测试实践-14.Mock、Spy后Stub Spring成员变量中的方法
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Mock/Spy后Stub Spring成员变量中的方法在被测试代码中,Spring的@Component组件实现类中通常会依赖其他的成员变量,可能存在多层的依赖关系。为了使被测试代码能够完成足够完备的测试,覆盖足够的场景与代码分支,需要对被测试代码进行细粒度的控制,可能需要对成员变量的方法进行Stub。例如被测试代原创 2020-08-15 22:07:56 · 1937 阅读 · 0 评论 -
Java单元测试实践-08.Stub、Replace、Suppress静态方法
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Stub、Replace、Suppress静态方法以下主要说明,如何使用PowerMockito对静态方法进行Stub、Replace,以及对静态方法所在的类进行Suppress。1.1. 对静态方法进行Stub使用PowerMockito.stub()方法支持对静态方法进行Stub。当间接调用被Stub方法时,原创 2020-08-15 22:06:45 · 3657 阅读 · 0 评论 -
Java单元测试实践-04.使用IDEA、Eclipse执行单元测试
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 使用IDE执行单元测试使用IDE执行单元测试是常见的执行方式,以下针对IntelliJ IDEA与Eclipse进行说明。1.1. IntelliJ IDEA1.1.1. 支持的功能直接执行测试类在IDEA中可直接通过Run或Debug执行测试类,会自动添加-ea参数( 参考 https://docs.or原创 2020-08-15 22:04:51 · 1476 阅读 · 0 评论 -
Java单元测试实践-01.单元测试概述与示例
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 前言以下内容为本人以开发人员的视角,在平时进行单元测试过程中的总结。主要内容为通用的,不限制具体业务场景的单元测试实践总结。由于能力有限,经验不足,难免会有差错存在,希望与大家一起探讨。2. 示例工程以下所述示例工程为UnitTest,地址为( https://github.com/Adrninistrator/U原创 2020-08-15 21:46:59 · 2655 阅读 · 0 评论 -
Java单元测试实践-19.Mockito与PowerMock的其他功能
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Mockito与PowerMock的其他功能1.1. 获取Mock对象详细信息Mockito提供了用于获取Mock对象详细信息的API,可参考 https://static.javadoc.io/org.mockito/mockito-core/latest/org/mockito/Mockito.html#mock原创 2020-08-13 00:27:16 · 3699 阅读 · 0 评论 -
Java单元测试实践-18.使用注解进行Stub、Replace、Suppress
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 使用@MockPolicy注解进行Stub、Replace、Suppress@MockPolicy注解的说明可参考 https://javadoc.io/doc/org.powermock/powermock-core/latest/org/powermock/core/classloader/annotations/原创 2020-08-13 00:26:05 · 742 阅读 · 0 评论 -
Java单元测试实践-17.Mybatis与Mock
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Mybatis与Mock在对Mybatis的Mapper对象进行处理时,可能需要使某个Mapper对象在某些情况下返回指定值,在某些情况下执行真实方法;或者需要对Mapper对象相关的数据库操作进行记录,以下进行说明。1.1. 测试示例说明与Mybatis相关的测试类在测试示例的adrninistrator.tes原创 2020-08-13 00:25:05 · 9191 阅读 · 0 评论 -
Java单元测试实践-16.Spring AOP与Mock
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Spring AOP与Mock以下示例使用CGLIB代理,或JDK动态代理,执行结果相同。以下使用注解的方式设置AOP,对方法或自定义注解设置AOP的效果相同。后续内容在设置AOP,对方法设置了AOP。对自定义注解设置AOP的处理可参考示例TestSpAOPARawGet、TestSpAOPARun类。1.1.原创 2020-08-13 00:24:20 · 2655 阅读 · 0 评论 -
Java单元测试实践-15.Stub、Replace、Suppress Spring的方法
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Stub、Replace、Suppress Spring的方法对Spring的@Component组件的方法进行Stub、Replace、Suppress时,与对Mock/Spy对象进行Stub相比,区别在于前者的作用范围是指定类的全部实例;后者的作用范围是指定的Mock/Spy对象。1.1. 对Spring的@Co原创 2020-08-13 00:23:16 · 1447 阅读 · 0 评论 -
Java单元测试实践-13.Spy后Stub Spring的@Component组件
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Spy后Stub Spring的@Component组件Spring的@Component组件的Spy对象,未Stub的方法会执行真实方法。在使用Spy对象时,与使用原始对象效果类似。1.1. 创建Spy对象创建Spy对象时,可以使用Mockito.spy()方法或@Spy注解,如下所示:Mockito.spy(原创 2020-08-13 00:22:22 · 1994 阅读 · 0 评论 -
Java单元测试实践-12.Answer与未Stub的Spring组件方法
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Answer与未Stub的Spring组件方法1.1. 未Stub的方法的返回值对于Spring的@Component组件的Mock对象未Stub的方法,返回值为返回类型对应的默认值。与未Stub的静态方法的返回值情况类似。可参考示例TestSpMockUnstubbedMethod1类。1.2. 未Stub的方法原创 2020-08-13 00:15:23 · 914 阅读 · 0 评论 -
Java单元测试实践-11.Mock后Stub Spring的@Component组件
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Spring Context加载次数在使用PowerMock时,每执行一个测试类,Spring Context都会重新加载一次,不会使用缓存。参考“A question on PowerMock setup”( https://github.com/powermock/powermock/issues/800 ),有原创 2020-08-13 00:14:15 · 3923 阅读 · 0 评论 -
Java单元测试实践-10.Mock非静态方法
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. 非静态方法Mock相关对非静态方法的进行Mock等处理时,部分情况与对Spring的@Component组件的处理类似,主要在后续Spring相关的内容进行详细说明,本部分的内容相对简略。1.1. Mock后Stub非静态方法1.1.1. 生成非静态方法对应的类的Mock对象参考 https://github.c原创 2020-08-13 00:12:59 · 3654 阅读 · 0 评论 -
Java单元测试实践-09.Mockito的Stub参数条件
Java单元测试实践-00.目录(9万多字文档+700多测试示例)https://blog.youkuaiyun.com/a82514921/article/details/1079693401. Mockito的Stub参数条件使用Mockito.when().then…()/Mockito.do…().when()等对方法进行Stub时,需要为每个参数指定Stub条件。以下以静态方法为示例,对Mockito.when()的Stub参数条件进行说明。1.1. 等于指定值在使用Mockito.when(被St原创 2020-08-13 00:11:38 · 6653 阅读 · 1 评论 -
Java单元测试实践-07.Answer与未Stub的静态方法
1. Answer与未Stub的静态方法以下主要说明,在对静态方法所在的类执行PowerMockito.mockStatic()方法时,指定的Answer对未被Stub的静态方法的影响。Answer可以看作执行被Mock/Stub的方法时的回调处理。2. 未Stub的方法的返回值当静态方法所在的类通过PowerMockito.mockStatic()进行Mock,对于未被Stub的静态方法,默认情况下,返回值为返回类型对应的默认值。参考“2. How about some stubbing?”(原创 2020-08-12 23:44:20 · 1558 阅读 · 0 评论 -
Java单元测试实践-06.Mock后Stub静态方法
1. Mock后Stub静态方法以下使用PowerMockito对包含静态方法的类进行Mock,再使用Mockito/PowerMockito对静态方法进行Stub,可以改变被Mock/Stub方法的行为。1.1. Mock包含静态方法的类参考“Mocking static methods”( https://github.com/powermock/powermock/wiki/MockStatic#mocking-static-methods )。使用PowerMockito对静态方法对应的类进原创 2020-08-12 23:42:29 · 6345 阅读 · 0 评论 -
Java单元测试实践-05.Mockito、PowerMock基本功能使用
1. Mockito与PowerMock的功能以下针对使用Mockito与PowerMock作为单元测试Mock框架进行说明。1.1. Mockito参考 https://github.com/mockito/mockito/wiki/FAQ 。Mockito是一个Java的Mock框架。支持对类或接口进行Mock,不支持对静态方法、私有方法、构造函数等进行Mock。1.2. PowerMock参考 https://github.com/powermock/powermock/blob/rele原创 2020-08-12 23:41:11 · 4653 阅读 · 0 评论 -
Java单元测试实践-03.使用spring-test进行单元测试
1. spring-test参考 https://docs.spring.io/spring/docs/4.3.26.RELEASE/spring-framework-reference/htmlsingle/#overview-testing 。spring-test模块支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。它提供Spring ApplicationContext的持续加载,以及这些上下文的缓存,还提供了可用于测试的独立于代码的mock对象。1.1. 基本配置1原创 2020-08-12 23:39:56 · 3196 阅读 · 0 评论 -
Java单元测试实践-02.使用JUnit进行单元测试
1. JUnit以下针对使用JUnit作为单元测试框架进行说明。1.1. JUnit4在示例代码中,使用JUnit4,版本为4.13。1.1.1. 添加引用参考“Gradle Dependency”( https://github.com/junit-team/junit4/wiki/Use-with-Gradle#gradle-dependency ),可通过以下方式在Gradle中引用JUnit 4.13。'junit:junit:4.13'1.1.2. @RunWith配置参考“@R原创 2020-08-12 23:38:32 · 1640 阅读 · 0 评论 -
Java单元测试实践-00.汇总(9万多字文档+700多测试示例)
1. 前言以下内容提供了Java单元测试实践总结,包含9万多字文档,与700多个测试示例。2. 相关文档地址01.单元测试概述与示例02.JUnit使用03.spring-test使用04.使用IDE执行单元测试05.Mockito、PowerMock基本使用06.Mock后Stub静态方法07.Answer与未Stub的静态方法08.Stub、Replace、Suppress静态方法09.Mockito的Stub参数条件10.非静态方法Moc原创 2020-08-12 23:37:20 · 5399 阅读 · 5 评论