繁体   English   中英

MockitoJunitRunner可以模拟Spring @Configuration类,但是所有字段都为null

[英]MockitoJunitRunner can mock a Spring @Configuration class but all fields are null

我有一个这样的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文件中的这些值?

我想对于您的字段,您至少有getter方法。 您应该使用whenthenReturn方法来使thenReturn工作。 像这样:

@Test
public void someTestMethod(){

    Mockito.when(mAppConfiguration.getActiveProfile()).thenReturn("some value");

    /** actual test goes here**/
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM