当前位置: 首页 > 知识库问答 >
问题:

如何在Spring MVC2.5项目中使用MockMvc?

西门安宁
2023-03-14
import static org.hamcrest.CoreMatchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import java.io.IOException;

import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import redis.embedded.RedisServer;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/afdspplicationContext*.xml",
        "/applicationContext*.xml"})
@WebAppConfiguration
public class ScheduleControllerTest {
    private static RedisServer redisServer;
    @Autowired
    private WebApplicationContext wac;

    private MockMvc mockMvc;
    @BeforeClass
    public static void setUp() throws IOException {

        redisServer = new RedisServer(45678);
        redisServer.start();
    }

    @Before
    public void setup() throws Exception {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
    }

    @AfterClass
    public static void tearDown() {
        redisServer.stop();
    }
    @Test
    public void getRoomStatusByDateAndBuilding() throws Exception {

        this.mockMvc.perform(get("/api/v1/recommend/checkin?userName=dd&roomName=f"))
                .andExpect(status().isOk())
                .andExpect(content().string(containsString("\"code\":422")))
                .andExpect(content().string(containsString("test")));
    }
}

但是,测试最终出现错误:

OBJC[77723]:类JavaLaunchHelper在/library/java/javaVirtualMachines/jdk1.7.0_80.jdk/contents/home/bin/java(0x10bc614c0)和/library/java/javaVirtualMachines/jdk1.7.0_80.jdk/contents/home/jre/lib/libInstrument.dylib(0x10bcd14e0)中实现。将使用两个中的一个。哪一个是未定义的。

java.lang.IllegalStateException:无法加载CacheAwareContextLoaderDelegate[class org.SpringFramework.Test.Context.cache.DefaultCacheawareContextLoaderDelegate]

进程已完成,退出代码为255

可能是由于Spring MVC 2.5与Spring Test 4.3.9不匹配导致出现此错误。是否存在任何解决办法,让我使用MockMvc同时仍然使用Spring MVC2.5?

共有1个答案

郭兴平
2023-03-14

Spring2.5发布于11年前(2007年11月19日),并没有正式支持您正在尝试使用的Java7。根据发布的Spring Framework 2.5:

  • 完全支持Java 6和Java EE 5(JDBC 4.0、JTA 1.1、JavaMail 1.4、JAX-WS 2.0)

您正在运行一个非常不寻常且容易出错的设置。升级Spring或recreate和backportmockmvc框架,然后降级到Java6。不要混合2.5和3.2依赖项,这会像您刚才观察到的那样产生大量类路径问题。

 类似资料:
  • 我之所以问这个问题,是因为我对Java和Android还不熟悉,我花了好几个小时想弄清楚这个问题。答案来自相关答案的组合,所以我想我会把我学到的东西记录下来,给其他正在挣扎的人。参见答案。 我使用的是Android Studio2.1.2,我的Java设置如下:

  • 我创建了一个NetBeans企业应用程序,它由包装ejb(jar)项目和web(war)项目的ear组成。 我的web项目中有一个servlet,我想在其中使用ejb项目中的一个ejb。

  • 问题内容: 有几个jar文件,这些文件来自COTS产品,我们将其保存在项目根目录下的项目“ extlib”文件夹中。我想将这些包含在常春藤中,但不要放在存储库中,只需从project / extlib文件夹中读取即可。这是可能的还是我需要将它们添加到工件中? 问题答案: 创建具有以下内容的常春藤设置文件: 并声明您的依赖项,如下所示: 特殊的“ NA”组织配置为从“ extlib”目录中提取文件。

  • 我找到了一个符合我目的的图书馆,但它是写在Kotlin上的。我可以在Java项目中使用它吗? 框架:https://github.com/mpetlyuk/initial_tips Kotlin上的用法: