当我将应用程序表单Maven(Eclipse)移动到Gradle(InteliJ)时,我的所有控制器测试都停止了工作。测试正在使用Maven进行旧的应用程序。
我的控制器方法:
@RequestMapping(value = "submit", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody FormResponse submitForm(@RequestBody TagData form) {
try {
tagService.saveTag(form);
} catch (BusinessException ex) {
return FormResponse.error(ex);
}
return FormResponse.success("admin.tag.saved");
}
我的测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/pl/dk/web/controllers/controllers-test-context.xml"})
@WebAppConfiguration
public class TagControllerTest {
@Autowired
TagController controller;
@Autowired
WebApplicationContext webContext;
@Autowired
TagManagerService tagService;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(webContext).build();
EasyMock.reset(tagService);
}
@Test
public void testSave() throws Exception {
TagData form = new TagData();
form.setName("Test tag");
form.setDescription("Test description");
EasyMock.expect(tagService.saveTag(form)).andReturn(1L);
controller.tagService = tagService;
RequestBuilder reqBuilder = MockMvcRequestBuilders.post("/admin/recipes/tag/submit")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(TestUtil.convertObjectToString(form));
MvcResult result = mockMvc.perform(reqBuilder)
.andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
Assert.assertNotNull(result);
}
}
在我最糟糕的情况下,这个问题可能与InteliJ与gradle或其他东西的集成有关,我在这里与鬼魂作斗争。任何人都可以帮我这个吗?
我的错误:
java.lang.AssertionError: Content type not set
答案 0 :(得分:0)
我找到了解决方案,虽然对我来说不是那么明显。问题与杰克逊图书馆有关。当我申请
testCompile 'com.fasterxml.jackson.core:jackson-databind:2.3.1'
而不是
testCompile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
testCompile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
所有人都开始工作了。