我正在编写用于服务,控制器等的单元测试,但是有一个@Component具有以下值
@Component
Public class myclass
@Autowired
Private MyTemplate myTemplate
@Value("$someString")
Private String someString
@PostConstruct
Public void loadString()
...
如何将值手动加载到@Values中?我尝试了Mocks,TestPropertySource,ReflectionTestUtils等方法
答案 0 :(得分:0)
我可以立即想到两个选择
1)您可以在test / resources / test.properties中定义$ someString
@RunWith(SpringRunner.class)
@TestPropertySource(locations="classpath:test.properties")
public class ClassTest {
}
2)手动完成
@RunWith(SpringRunner.class)
public class ClassTest {
@Autowired
private MyClass miclass;
@Before
public void setupObject() {
miclass.setProperty("someting");
}
}
答案 1 :(得分:0)
您可以通过ReflectionTestUtils在测试类中插入@Value。仅在控制器的情况下加载容器。编写服务和dao的测试用例时,无需加载spring容器。
public class TestClass{
private @InjectsMock ServiceClass service;
@BeforeAll
public void setUp(){
ReflectionTestUtils.setField(service, "someString", "someValue");
}
//your test cases over here.
}