我编写了Junit测试类来测试特定方法。在此方法中处理的变量之一是通过从属性文件中获取值来弹簧注入。
以下是我的测试方法
@Test
public void myTestMethod() {
//invoking the method to be tested
Assert.assertTrue(updateGroceries());
}
这是要测试的课程,
public class ToBeTested {
//Spring injected value
String categories;
public boolean updateGroceries() {
List<String> categoryList = StringUtils.convertStringToList(categories);
}
在上面的类中,categories变量是spring注入的。 这是属性文件内容:
categories = Dals,Pulses,Dry Fruits,Edible Oil
现在在运行我的Junit方法时,执行失败,因为依赖注入失败。因为我要测试的代码在tomcat上运行。我想在不运行tomcat的情况下测试代码。请提出一些解决方案。
答案 0 :(得分:1)
首先要运行mockito,你需要在测试中启用它。
使用注释@RunWith(MockitoJunitRunner.class)
或在测试开始时执行Mockito.initMocks()
。
那么你的测试应该是这样的:
@RunWith(MockitoJunitRunner.class)
private YourTest{
@InjectMocks
ToBeTested toBeTested;
@Mock
ToBeTestedDependency dependency;
@Before
public void setUp(){
ReflectionTestUtils.setField(toBeTested, "categories",
"someCategory");
}
@Test
public void shouldDoThisOrThat(){
toBeTested.updateCategories();
}
}
不幸的是,mockito不支持注入@Value
注释字段。您需要使用ReflectionTestUtils
或使用SpringJUnit4ClassRunner
设置运行测试,您需要使用PropertyPlaceholder
配置定义弹簧上下文,以解析您拥有Value
密钥的属性。在那里你可以找到documentation and example弹簧测试方法的参考。
希望这会有所帮助。
答案 1 :(得分:0)
你应该看看Mockito。使用mockito框架时,可以为弹簧注入值创建模拟。您应该阅读有关mockito website的更多信息。