[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;

 

posted @   Zhentiw  阅读(393)  评论(0编辑  收藏  举报
编辑推荐:
· 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
点击右上角即可分享
微信分享提示