,我试图写单元测试用例是如下的控制器 -无法解析占位符在单位的Mockito测试
@RequestMapping("${rest.base.path}/plugin")
public class Controller {
.
.
.
}
单元测试案例是设置 -
@RunWith(MockitoJUnitRunner.class)
public class ControllerTest {
@Autowired
private MockMvc mvc;
@InjectMocks
Controller dataController;
@Mock
PluginService pluginService;
@Test
public void createFiles() throws Exception {
this.mvc = MockMvcBuilders.standaloneSetup(dataController).build();
mvc.perform(MockMvcRequestBuilders.get("/dc/plugin")
.contentType(MediaType.APPLICATION_JSON));
}
在运行单元测试时,无法解析占位符$ {rest.base.path},因为我没有加载Spring上下文。我尝试设置System.setProperty(“rest.base.path”,“/ api”)没有任何成功。无论如何,我可以给这个占位符赋值而不删除@RunWith(MockitoJUnitRunner.class)?
为什么不使用Mockito JUnit规则('@Rule public MockitoRule rule = MockitoJUnit.rule();')而不是'@ RunWith'。 –
这将如何解决占位符问题? – davyjones
而不是直接使用Mockito(假设你使用的是Spring Boot 1.4或更高版本),只需将其作为常规测试运行即可,取消“MockMvc”的设置并用'@ MockBean'替换'@ Mock',这将指示Spring Boot创建一个该bean的模拟并将其注入到使用它的地方。 –