[Spring Unit Testing] Spring Unit Testing with a Java Context
For example, we want to test against a implemataion:
package com.example.in28minutes.basic; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @Component @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class BinarySearchImpl { @Autowired @Qualifier("bubble") private SortAlgo sortAlgo; public int binarySearch(int [] numbers, int target) { // Sorting an array sortAlgo.sort(numbers); System.out.println(sortAlgo); // Quick sort // Return the result return 3; } }
We want to do the test with Java Context:
1. Bring in some dependencies: in pom.xml
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> -->
Create a new test file:
package com.example.in28minutes.basic; import com.example.in28minutes.In28minutesBasicApplication; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.assertEquals; // Load the context @RunWith(SpringRunner.class) @ContextConfiguration(classes = In28minutesBasicApplication.class) public class BinarySearchTest { // Get this bean from context @Autowired BinarySearchImpl binarySearchImpl; @Test public void testBasicScenario () { // call method on binarySearch int result = binarySearchImpl.binarySearch(new int[] {}, 5); // check if the value is correct assertEquals(3, result); } }
Two things we need to know:
1. Where can Java find 'BinarySearchImpl', which context it is:
@RunWith(SpringRunner.class) @ContextConfiguration(classes = In28minutesBasicApplication.class)
Basiclly we need to find out, where we register it:
@SpringBootApplication public class In28minutesBasicApplication { // What are the beans? --@Component // What are the dependencies of a bean? -- @AutoWired // Where to search for beans => NO NEED public static void main(String[] args) { // Application Context ApplicationContext applicationContext = SpringApplication.run(In28minutesBasicApplication.class, args); BinarySearchImpl binarySearch = applicationContext.getBean(BinarySearchImpl.class); .... } }
2. Once we load the context and run with spring runner, we can use '@Autowired' to bring in the bean from the context:
// Get this bean from context @Autowired BinarySearchImpl binarySearchImpl;
分类:
Java
, Unit Testing
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-04-24 [React Native] Reduce Long Import Statements in React Native with Absolute Imports
2018-04-24 [SCSS] Convert SCSS Variable Arguments to JavaScript
2017-04-24 [Jenkins] Define a pipeline
2016-04-24 [Javascript] Refactoring: Polymorphic Functions