当前位置: 首页 > 知识库问答 >
问题:

在单元测试中重写默认Spring@value注释值

王才英
2023-03-14
@Configuration
public class MyConfig {
    @Value("${MAX_CONN:200}")
    private int maxConn;

    //more code here
}

@RunWith(SpringRunner.class)
@ContextConfiguration(classes={MyConfig.class, PropertySourcesPlaceholderConfigurer.class}, loader=AnnotationConfigContextLoader.class)
@TestPropertySource(properties = {
        "MAX_CONN=2"
})
public class SomeTest {
    //tests here
}

注:Spring版本-4.3.13

共有1个答案

颜森
2023-03-14

具有上述运行配置的输出

MyConfig{maxConn=100}

Process finished with exit code 0

SpringBootWebApplication.java

package com.test;

import com.test.service.MyConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.Banner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootConsoleApplication implements CommandLineRunner {

    @Autowired
    MyConfig myConfig;


    public static void main(String[] args) throws Exception {
        SpringApplication app = new SpringApplication(SpringBootConsoleApplication.class);
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
        //SpringApplication.run(SpringBootConsoleApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println(myConfig);
    }
}

MyConfig.java

package com.test.service;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyConfig {

    @Value("${MAX.CONN:200}")
    private int maxConn;

    @Override
    public String toString() {
        return "MyConfig{" +
                "maxConn=" + maxConn +
                '}';
    }
}
import com.test.SpringBootConsoleApplication;
import com.test.service.MyConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootConsoleApplication.class)
public class TestProperties {

    static {
        System.setProperty("MAX.CONN", "2");
    }

    @Autowired
    MyConfig myConfig;

    @Test
    public void testSequence() {
        //System.out.println(myConfig);
        //...
    }

}
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.9.RELEASE)

MyConfig{maxConn=2}

Process finished with exit code 0
 类似资料:
  • 如果我在spring的控制器中有一个映射,比如: 我可以做一个注释,并将默认值10封装在上面吗?比如: 让spring像预期的那样理解我的注释。我发现https://stackabuse.com/spring-annotations-requestmapping-and-its-variants/当我看到他们用@GetMapping、@PostMapping等工具所做的事情时,我有点满怀希望。 但

  • 我想为上面的内容编写单元测试,以测试我正在使用的注释的sampleURL,比如如果我给出任何应该与regex模式匹配的URL。我浏览了以下链接:如何在spring中进行单元测试验证注释,如何使用JUnit测试类的验证注释?但它们没有多大帮助,我也有setSampleURL函数。那么,如何为sampleURL变量编写测试呢。基本上,我想为regex模式编写测试,即我给sampleURL的值是否与re

  • 应用程序类文件: 集成测试:

  • 我知道DateTimeFormat注释可以在Spring中的模型类的日期属性上定义,但是有没有任何方法可以为Spring模型类中的所有日期定义一个默认的DateTimeFormat注释呢? @DateTimeFormat(pattern=“MM/DD/YYYY”) 私人日期DeliveryDate; 它将使我不必对每个日期字段进行注释。它还将使我更容易更改应用程序宽日期格式以后。

  • 概要文件对于我所需要的似乎有点过分了,我不确定这是否可以通过主注释来实现,因为不同的单元测试可能有不同的模拟。