我试图测试一个基于Spring引导的Restendpoint。代码能够返回预期的输出,但测试失败,错误如下:
已解析[org.springframework.http.converter.HttpMessageNotWritableException:预设内容类型为“null”的[class java.util.LinkedList]没有转换器
对此有任何想法都将不胜感激!
下面是相同的代码:
控制器-
@RestController
public class SampleController {
@Autowired
StudentService studentService;
@GetMapping(value="students",produces = "application/json")
public ResponseEntity<List<Student>> getStudentDetails(){
return new ResponseEntity<List<Student>>(studentService.getAllStudents(),HttpStatus.OK);
}
}
服务等级-
@Service
public class StudentService {
private List<Student> listOfStudents;
@PostConstruct
public void init() {
List<Student> list1= new LinkedList<Student>();
Student s1 = new Student("a","S1");
list1.add(s1);
listOfStudents = list1;
}
public List<Student> getAllStudents(){
return listOfStudents;
}
}
波乔-
public class Student {
private String sectionName;
private String name;
public String getRollNum() {
return sectionName;
}
public void setRollNum(String rollNum) {
this.sectionName = rollNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String rollNum, String name) {
this.sectionName = rollNum;
this.name = name;
}
@Override
public String toString() {
return "Student [sectionName=" + sectionName + ", name=" + name + "]";
}
}
试验-
@SpringBootTest(classes = {SampleController.class,StudentService.class})
@AutoConfigureMockMvc
public class SampleControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
SampleController sampleController;
@MockBean
StudentService studentService;
@Test
public void getAllUsersTest() throws Exception{
List<Student> mockedList = new LinkedList<Student>();
Student dummyStudent = new Student("dummy","Dummy Student");
mockedList.add(dummyStudent);
Mockito.when(studentService.getAllStudents()).thenReturn(mockedList);
mockMvc.perform(get("/students")).andExpect(status().isOk());
}
}
当手动配置@SpringBootTest
中的类
属性时,springboot的默认自动配置将退出,并且您不会在所有bean中获得springtestcontext:@SpringBootTest(classes={SampleController.class,StudentService.class})
。这样,您的上下文就缺少很多自动配置的bean,比如JSON转换器。
使用@springbootest
而不指定类
来编写与整个Spring上下文的集成测试,或者使用@WebMvcTest
。
我想对于您的测试场景,切片测试注释@WebMvcTest(SampleController.class)
就是您要寻找的。这将为您创建一个切片的SpringTestContext,它只包含相关的SpringMVC组件。它还将自动配置MockMvc
实例。
我有spring boot应用程序,spring boot版本为1.5.8,驼峰版本为2.20.1 简单路线: 简单测试: 当我运行这个测试时,它运行得很好,我收到一条消息,endpoint满意。如果我添加注释,测试会失败吗?为什么?在运行maven clean install时也没有注释,它也会失败:( 有人知道这个注释对骆驼测试有什么作用吗,或者我如何调整它使其工作? 谢谢你
我正在springboot应用程序中编写Junits,它只有一个初始化器类 以及其他控制器和服务类。 服务类的Junit如下所示: 当我运行Junit时,它会抛出如下错误: 我还尝试了所有注释,如,@ContextConfiguration(classes=Initializer.class),,但它仍会抛出相同的错误。代码中没有其他类似于应用程序上下文的配置类。
我遵循一个单元测试服务的教程,我试图使用JUnit5而不是JUnit4(这是教程使用的)。当我完全按照JUnit4的教程操作时,测试工作正常,但是我得到了JUnit5的NullPointerExc0019。 存储库: 服务: 测试: 以下是异常的前几行: 生成文件的测试和依赖项部分:
我有一个类(A),它包含另一个类(B)的自动生成依赖项,而另一个类(B)又具有另一个类C的自动生成依赖项。 我正在尝试使用Mockito编写测试用例,并对依赖项使用spy注释。我在监视C类时遇到空指针错误。 如何从A类执行此单元测试?
问题出现在字段中。 在JUnit4中,一切都工作得很好,没有错误。我试图使用JUnit4中的,因为我在pom.xml中有一个junit-vintage-engine依赖项,但没有帮助。
问题内容: 到目前为止,我有两个测试。一个仅使用jUnit框架即可正常工作。另一个使用spring-test库并在每次尝试运行该异常时创建此异常。有什么想法可能导致问题吗? Error Maven test dependencies Dependency tree 问题答案: 你是否正在使用旧版本的Eclipse(Galileo或更低版本)?还是旧版的junit插件?如果是这样,则可能是问题的原因