Java 使用@mock进行模拟将显示为空
我正试图运行这样一个junit测试,在PageBuilderService服务类中使用mockito和注入依赖项Java 使用@mock进行模拟将显示为空,java,junit,Java,Junit,我正试图运行这样一个junit测试,在PageBuilderService服务类中使用mockito和注入依赖项 @RunWith(MockitoJUnitRunner.class) @ActiveProfiles(profiles = "staging") @ContextConfiguration(loader = AnnotationConfigContextLoader.class , classes = {ContentProperties.class , MasterPr
@RunWith(MockitoJUnitRunner.class)
@ActiveProfiles(profiles = "staging")
@ContextConfiguration(loader = AnnotationConfigContextLoader.class , classes = {ContentProperties.class , MasterPropertiesFactory.class })
class PageBuilderServiceTest {
@Mock
public CService cs;
@Mock
private RService rs;
@InjectMocks
PageBuilderService pageBuilderService ;
@ParameterizedTest
@EnumSource(HompageEnum.class)
@DisplayName("Testing doIt wsith EnumSource")
public void checkRowposition(HompageEnum homepageEnum) {
Mockito.when(contentProperties.getPageFolder(anyString())).thenReturn("http://google.com");
}
}
我的主课是
@Service("pgService")
public class PageBuilderService {
@Autowired
private RService rs;
@Autowired
public CService cs;
public Queue<String> getPaginatedContent(HomepageRequest homepageRequest) {
Queue<String> staticContent = getStaticContent(homepageRequest.getUrl());
return staticContent
}
public Queue<String> getStaticContent(String url) {
Queue<String> files = new LinkedList<>();
String dir = contentProperties.getPageFolder(url);
return null;
}
}
@Service(“pgService”)
公共类PageBuilderService{
@自动连线
私人资源服务;
@自动连线
公共服务;
公共队列getPaginatedContent(HomepageRequest HomepageRequest){
Queue staticContent=getStaticContent(homepageRequest.getUrl());
返回静态内容
}
公共队列getStaticContent(字符串url){
队列文件=新建LinkedList();
String dir=contentProperties.getPageFolder(url);
返回null;
}
}
当我们使用ContentProperties content=mock(ContentProperties.class)时,它可以正常工作,但是当我使用mock注释时,ContentProperties是空的。我看不出什么是
ContentProperties
-您没有在测试中注入它,但有一件事显然是错误的:
如果您想启动spring,必须使用SpringJUnit4ClassRunner.class
/SpringRunner.class
运行它,而不是使用mockito runner
如果没有spring runner,则没有必要指定:
@ActiveProfiles(profiles = "staging")
@ContextConfiguration(loader = AnnotationConfigContextLoader.class , classes = {ContentProperties.class , MasterPropertiesFactory.class })
除此之外,请检查
@Mock public CService cs
和其他用@Mock
注释的字段确实有价值(这基本上是Mockito runner应该做的,所以除非这里缺少什么,否则其他Mock和contentProperties
之间没有区别)请附加整个类,我们甚至看不到您的导入。