Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring测试Mvc控制器测试_Java_Spring_Spring Mvc_Junit_Spring Test Mvc - Fatal编程技术网

Java Spring测试Mvc控制器测试

Java Spring测试Mvc控制器测试,java,spring,spring-mvc,junit,spring-test-mvc,Java,Spring,Spring Mvc,Junit,Spring Test Mvc,我使用SpringTestMVC(单机版),因为我的应用程序运行Spring3.1。我基本上只是尝试测试我的控制器方法和响应HTTP代码 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class}) public class AdminSpringControllerTests {

我使用SpringTestMVC(单机版),因为我的应用程序运行Spring3.1。我基本上只是尝试测试我的控制器方法和响应HTTP代码

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class})
public class AdminSpringControllerTests {
    private AdminSpringController cut;
    private MockMvc mockMvc;
    public AdminSpringControllerTests() {

        cut = new AdminSpringController();
        this.mockMvc = MockMvcBuilders.standaloneSetup(cut).build();
    }
    @Test
    public void testGetUsers_Sc200_1() throws Exception{

        List<User> users = new ArrayList<User>();
        for (int i = 1; i<3; i++) {
            User user = new User();
            user.setId(i);
            user.setUserId("test"+i);
            user.setName("Max Testermann");

            users.add(user);
        }

        EasyMock.expect(cut.userService.getUsers()).andReturn(users);
        EasyMock.replay();

        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/user");

        this.mockMvc.perform(request).andExpect(MockMvcResultMatchers.status().isOk());

        EasyMock.verify(cut);

    }
}
是否需要@Autowire我的控制器?我的构造函数错了吗? src/test/resources/“package path”/AdminSpringControllerTests-context.xml中有一个上下文文件,但它只包含
,我是否必须在那里插入我的控制器bean(问题1,是否有必要)

Thx需要任何帮助:)

//编辑

我更新了我的代码:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class AdminSpringControllerTests {

    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext wac;

    public AdminSpringControllerTests() {
        this.mockMvc = MockMvcBuilders.webApplicationContextSetup(this.wac).build();
    }

    @Test
    public void testGetUsers_Sc200_1() throws Exception{

        List<User> users = new ArrayList<User>();
        for (int i = 1; i<3; i++) {
            User user = new User();
            user.setId(i);
            user.setUserId("test"+i);
            user.setName("Max Testermann");

            users.add(user);
        }

        EasyMock.expect(cut.userService.getUsers()).andReturn(users);
        EasyMock.replay();

        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/user").accept(MediaType.APPLICATION_JSON);

        this.mockMvc.perform(request).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk());

        EasyMock.verify(cut);

    }
}
@RunWith(SpringJUnit4ClassRunner.class)
@上下文配置
公共类AdminsSpringControllerTests{
私有MockMvc-MockMvc;
@自动连线
私有WebApplicationContext wac;
公共管理员SpringControllerTests(){
this.mockMvc=MockMvcBuilders.webApplicationContextSetup(this.wac.build();
}
@试验
public void testGetUsers\u Sc200\u 1()引发异常{
列表用户=新建ArrayList();

对于(int i=1;i您正在使用StandaloneStup,并通过使用新的AdminSpringController()创建控制器);因此spring无法对其进行任何控制。使用StandaloneStup一次只测试一个控制器更方便,无需连接到过滤器/拦截器等。这可能不是您想要的。请尝试改用webAppContextSetup:

....
 @Autowired
private WebApplicationContext wac;

@BeforeClass
public void setUp(){
    mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}

这样,它应该使用您的spring配置。

根本原因是spring版本问题。发布您正在使用的每个spring jar的版本。spring-test-mvc 1.0.0.M2;easyMock 3.1和spring 3.1.0;所有spring库版本都应该相同。在这种情况下,可能是
3.1.0
。这是正确的;在spring 3.1.0中,spring测试mvc是正确的没有像3.2中那样实现,因此我使用了独立项目(),调试控制台输出会有帮助吗?无法解决问题…我使用的是spring 3.1,WebApplicationContext()在spring中,因为3.2WebAppConfiguration注释是从3.2开始的,WebApplicationContext现在已经13岁了:)好的。但是我使用的是3.1:)但是你不需要@WebAppConfiguration;)好的。所以我自动连接WebApplicationContext和
mockMvc=MockMvcBuilders.webApplicationContextSetup(wac.build();
。但是我得到了
java.lang.IllegalArgumentException:WebApplicationContext是必需的
。我想我把基本的东西弄错了。
java.lang.IllegalArgumentException: WebApplicationContext is required
    at org.springframework.util.Assert.notNull(Assert.java:112)
    at org.springframework.test.web.server.setup.InitializedContextMockMvcBuilder.<init>(InitializedContextMockMvcBuilder.java:39) 
....
 @Autowired
private WebApplicationContext wac;

@BeforeClass
public void setUp(){
    mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}