我有一个这样的Configuration类:
@Configuration
@ComponentScan(basePackages = "com.**.**") // production code, can't write package name
@EnableCaching
@PropertySource(value = { "classpath:application.properties", "classpath:version.txt"})
@EnableScheduling
public class AppConfig {
@Value("${builtProfile}")
@Nonnull
private String activeProfile;
...
}
这是测试类:
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = {AppConfig.class, MvcConfiguration.class})
@ActiveProfiles("test")
public class NativeLoginServiceImplTest {
@InjectMocks
private NativeLoginServiceImpl nativeLoginServiceImpl;
@Mock
private AppConfig mAppConfiguration;
}
mAppConfiguration
是在测试期间创建的,但问题是它的所有字段均为空。我的测试设置有什么问题?如何制作正确的设置,以便Mockito可以自动为我获取application.properties
文件中的这些值?
答案 0 :(得分:0)
我想对于您的字段,您至少具有getter方法。您应该使用when
和thenReturn
方法来使模拟工作。像这样:
@Test
public void someTestMethod(){
Mockito.when(mAppConfiguration.getActiveProfile()).thenReturn("some value");
/** actual test goes here**/
}