Junit test with mock

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| /* * This file was generated by the Gradle 'init' task. * * This generated file contains a sample Java project to get you started. * For more details take a look at the Java Quickstart chapter in the Gradle * User Manual available at https://docs.gradle.org/6.4/userguide/tutorial_java_projects.html */ apply plugin: 'java' apply plugin: 'java-library' apply plugin:'application' mainClassName = "gradletst.HelloWorld" repositories { mavenLocal() mavenCentral() } compileJava{ options.debug = true options.deprecation = true doLast { println "compileJava done..." } } dependencies { implementation 'org.slf4j:jcl-over-slf4j:1.7.36' testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation 'org.mockito:mockito-junit-jupiter:4.11.0' testImplementation 'org.mockito:mockito-core:4.11.0' testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: '1.13.0' testImplementation group: 'net.bytebuddy', name: 'byte-buddy-agent', version: '1.13.0' testImplementation group: 'org.mockito', name: 'mockito-inline', version: '3.9.0' // END for test implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.7' } test { useJUnitPlatform() } jar { manifest { attributes 'Main-Class': 'gradletst.HelloWorld' } } |

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| package gradletst.biz; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.when; import java.io.UnsupportedEncodingException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.MockedConstruction; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) public class JobManagerTest { @InjectMocks JobManager mgr; @Spy IdGenerator idWrapper; @Spy GroupGenerator nameGen; @Spy RunJob job; @Test public void test() throws UnsupportedEncodingException { System.out.println("running in test"); JobManager mgr= new JobManager(); mgr.run(); System.out.println(); } @Test public void testStatic() throws UnsupportedEncodingException { System.out.println("running in testStatic"); // static mock String retV = "MockSts"; MockedStatic<IdGenerator> msJob = Mockito.mockStatic(IdGenerator.class); msJob.when(() -> IdGenerator.generateId()).thenReturn(retV); mgr.run(); System.out.println(); msJob.close(); } @Test public void testInst() throws UnsupportedEncodingException { System.out.println("running in testInst"); // Instance is created inside method MockedConstruction<IdGenerator> mkCon = Mockito.mockConstruction(IdGenerator.class, (mock, context) -> when(mock.wrap(anyString())).thenReturn("MockIns")); mgr.run(); System.out.println(); mkCon.close(); } @Test public void testSpy() throws UnsupportedEncodingException { System.out.println("running in testSpy"); // mock one method when(nameGen.genGroupName()).thenReturn("SPY"); mgr.run(); System.out.println(); } } |

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| package gradletst.biz; import java.util.Random; public class IdGenerator { public static String generateId() { Random r=new Random(); String id = Integer.valueOf(r.nextInt()).toString() ; return id; } public String wrap(String id) { return "id:'"+id+"'"; } } package gradletst.biz; import java.io.UnsupportedEncodingException; public class GroupGenerator { String defaultName = "blue"; public String genGroupName() throws UnsupportedEncodingException { return defaultName; } public String wrapGroup(String name) { return "name:'" + name+"'"; } } package gradletst.biz; public class FullNameIntegrator { public String createStatement(String group,String id ) { return group + " " +id ; } } package gradletst.biz; import java.text.SimpleDateFormat; import java.util.Date; public class JobWrapper { public String wrap(String sts) { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String dt= sdf.format(new Date())+":"; return dt +" Job "+sts +" is running happily!"; } } package gradletst.biz; public class RunJob { public void run(String sts) { System.out.println("Start job ..."); System.out.println(sts); System.out.println("End job ..."); } } package gradletst.biz; import java.io.UnsupportedEncodingException; public class JobManager { RunJob job=new RunJob(); FullNameIntegrator svc =new FullNameIntegrator(); GroupGenerator nameGen=new GroupGenerator(); JobWrapper wrapper =new JobWrapper(); public void run() throws UnsupportedEncodingException { String id =IdGenerator.generateId(); IdGenerator idGen = new IdGenerator(); String wrapId = idGen.wrap(id); String group=nameGen.genGroupName(); String wrapGroup =nameGen.wrapGroup(group); String sts= svc.createStatement(wrapGroup, wrapId); String wrapSts = wrapper.wrap(sts); job.run(wrapSts); } public RunJob getJob() { return job; } public void setJob(RunJob job) { this.job = job; } public FullNameIntegrator getSvc() { return svc; } public void setSvc(FullNameIntegrator svc) { this.svc = svc; } } |

相关推荐
测试修炼手册6 小时前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver
大黄说说4 天前
Hyperf 协程 PHP 实战:高并发秒杀接口从 0 到 1 落地
junit
名字还没想好☜7 天前
用 Redis + Redisson 实现分布式锁:从踩坑到生产可用
java·redis·分布式·junit·分布式锁·redisson
ipad协议源码7 天前
为何网站会出现的挂马?
junit·软件开发·开源源码
再玩一会儿看代码8 天前
JUnit 测试框架详解:从实际开发、业务测试到 Java 面试高频问题
java·经验分享·笔记·junit·面试
童话的守望者9 天前
BookHub (RWCTF 2018) 通关
junit
techdashen12 天前
Uber 如何完成超大规模 JUnit 迁移:从 JUnit 4 到 JUnit 5 的自动化工程实践
junit·sqlserver·自动化
会周易的程序员14 天前
使用 LuaBridge 封装 C++ 日志库 microLog 为 Lua 模块
c++·物联网·junit·lua·日志·iot·aiot
欢呼的太阳15 天前
在上一篇随笔中介绍了四种编程语言。这次再介绍四种编程语言:Fortran、Lua、Lisp 和 Logo。
junit·lua·lisp
Full Stack Developme15 天前
SpringBoot JUnit 教程
数据库·spring boot·spring·junit