我有一个包含以下属性的application.yml文件
NAME:
CLASS:
ID: ABC123456下面是我的spring boot组件类
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
@Slf4j
public class ProcessMe {
@Value("${NAME.CLASS.ID}")
String StuId;
public boolean IsRightOrWrong(){
System.out.println(StuId);
}
}在上面的代码中,组件System.out.println(StuId);总是为空。当我打算使用Junit测试类调用这个函数时。上面的代码有什么问题?
发布于 2020-09-25 03:48:07
我认为这个解决方案在构造函数中定义如下
@Component
@Slf4j
public class ProcessMe {
String StuId;
@Autowired
ProcessMe(@Value("${NAME.CLASS.ID}") String StuId) {
this.StuId = StuId;
}
public boolean IsRightOrWrong(){
System.out.println(this.StuId);
}
}希望有用
发布于 2020-09-26 00:01:28
如果您可以启动应用程序,那么我相信您的配置是正确的。我的意思是StuId有一定的价值。
问题是如何测试When i am tying to call this function using Junit test class. What's wrong in the above code?
看起来您是从单元测试中调用的。然后,您需要将application.yaml克隆到测试配置文件中,这样您的测试容器才能读取数据,否则您必须模拟您的配置。
顺便说一句: Java对象属性应该使用camel大小写lol
https://stackoverflow.com/questions/64053274
复制相似问题