我的Junit不能获取测试属性文件中设置的属性。 我没有收到错误,但是从属性文件返回的值为空
要测试的课程:
package com.abc.mysource.mypackage;
@Component
@ComponentScan
public class MyHelper {
@Autowired
@Qualifier("commonProperties")
private CommonProperties commonProperties;
public LocalDateTime method1ThatUsesCommonProperties(LocalDateTime startDateTime) throws Exception {
String customUserType = commonProperties.getUserType(); // Returns null if run as JUnit test
//Further processing
}
}
支持组件-豆类和配置类:
package com.abc.mysource.mypackage;
@Component
public class CommonProperties {
@Value("${myhelper.userType}")
private String userType;
public String getUserType() {
return userType;
}
public void setCalendarType(String userType) {
this.userType = userType;
}
}
配置类:
package com.abc.mysource.mypackage;
@Configuration
@ComponentScan(basePackages ="com.abc.mysource.mypackage.*")
@PropertySource("classpath:default.properties")
public class CommonConfig {}
src / main / resources下的default.properties
myhelper.userType=PRIORITY
我的测试班:
package com.abc.mysource.mypackage.test;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes=MyHelper.class)
@TestPropertySource("classpath:default-test.properties")
@EnableConfigurationProperties
public class MyHelperTest {
@MockBean(name="commonProperties")
private CommonProperties commonProperties;
@Autowired
private MyHelper myHelper;
@Test
public void testMethod1ThatUsesCommonProperties() {
myHelper.method1ThatUsesCommonProperties();
}
}
在/ src / test / resources下定义的default-test.properties:
myhelper.userType=COMMON
注意:
我将default-test.properties移至/ src / main / resources-commonProperties.getUserType()为空
我什至使用@TestPropertySource(properties = {“ myhelper.userType = COMMON”})。结果相同
注意2:
我在@TestPropertySource is not loading properties上尝试过该解决方案。
此解决方案要求我在src / test / java下创建一个名为CommonProperties的重复bean。但是@MockBean执行失败
@MockBean(name="commonProperties")
private CommonProperties commonProperties;
请不要标记重复项。
注意3: 我的是弹簧,不是弹簧靴子应用程序。
答案 0 :(得分:0)
如果您不需要特定状态,则适用于MockBean。通常,此bean是“隔离的”,此bean的每个方法调用都将具有相同的结果。它是“隔离的”->使用@Value批注的服务将不适用于此bean。
您需要的是经过适当构造和初始化的“普通” bean。请使用@Autowired批注,并在需要时使用测试配置文件定义另一个bean。