@Component
public class MyHelper {
@Value("${max.retry.count:3}")
private int maxRetryCount;
@Value("${max.query.count:1000}")
private int maxQueryCount;
}
我正在使用@value注释从属性文件中读取变量的值。 使用EasyMock编写junit时,出现
异常"nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [int];
nested exception is java.lang.NumberFormatException: For input string: "${max.retry.count:3}".
如果将数据类型更改为String,则可以正常工作。 有人帮助我如何模拟这个。
答案 0 :(得分:0)
实际上有多种方法可以实现。
由Spring IoC容器管理的MyHelper
在这种情况下,您需要在测试规范上方添加其他注释,以创建ApplicationContext
以便注入MyHelper
bean。
@RunWith(SpringJUnit4ClassRunner.class)
public class MyHelperTest { ... }
您还将需要一个properties
文件进行测试。如果您使用的是Spring Boot,则可以在application.properties
文件夹的范围内简单地创建一个test/resources
文件,并将这些属性的值放在此处,然后将其提取。
MyHelper手动实例化
这很容易。您只需为maxRetryCount
和maxQueryCount
创建一个构造函数或setter并以这种方式设置值。
public class MyHelperTest {
private MyHelper myHelper = new MyHelper(5, 6);
}
在这种情况下,由于MyHelper
不受Spring IoC容器的管理,注释将被忽略。
答案 1 :(得分:0)
尝试更改以下行
@Value("${max.query.count:1000}")
到
@Value("#{new int('${max.query.count:1000}')}")