在单元测试中重用Spring Mockmvc

在单元测试中重用Spring Mockmvc,spring,unit-testing,spring-mvc,mockmvc,spring-mvc-test,Spring,Unit Testing,Spring Mvc,Mockmvc,Spring Mvc Test,Mockmvc可以在测试套件中重用吗?我有几个测试套件,所以在每次测试之间必须初始化mockmvc,然后运行所有测试,这真的很慢 我曾尝试将mockMvc放入注释@BeforeClass而不是@Before中,但因为它是一个静态方法,WebApplicationContext和FilterChainProxy是自动连接的,所以据我所知,不能在静态方法中引用 我的测试当前设置如下: @ContextConfiguration(classes = {Application.class}) @RunW

Mockmvc可以在测试套件中重用吗?我有几个测试套件,所以在每次测试之间必须初始化mockmvc,然后运行所有测试,这真的很慢

我曾尝试将mockMvc放入注释@BeforeClass而不是@Before中,但因为它是一个静态方法,WebApplicationContext和FilterChainProxy是自动连接的,所以据我所知,不能在静态方法中引用

我的测试当前设置如下:

@ContextConfiguration(classes = {Application.class})
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class MyTest {

  @Autowired
  private static WebApplicationContext wac;

  @Autowired
  private static FilterChainProxy springSecurityFilter;

  private MockMvc mockMvc;

  @Before
  public void setUp() {
      assertNotNull(wac);
      assertNotNull(springSecurityFilter);

      this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).addFilters(springSecurityFilter).build();
  }
有人知道如何/是否可以重用Mockmvc吗?每次测试都要设置和拆除,这似乎是一项昂贵的操作


任何帮助都将不胜感激,谢谢。

一个
@Before
方法怎么样?如果设置了mockMvc,它不会覆盖mockMvc

private static MockMvc mockMvc = null;

@Before
public void setUp() {
    assertNotNull(wac);
    assertNotNull(springSecurityFilter);

    if (this.mockMvc == null) {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).addFilters(springSecurityFilter).build();
    }
}

但是
mockmvc
在每次测试后都会被删除,因此它将再次设置为null并重新初始化。另外,我认为您的意思是
this.mockMvc==null
?修复了null检查,还忘记了mockMvc成员上的static。我已经对它进行了测试,它只会初始化mockMvc一次。我在if语句中添加了一个print语句,但是print语句会在测试套件中的每个测试中执行。我使用的是Spring v4.2.5、JUnit v4.12和Java 1.8.051-我的套件中有7个测试,构建mockMvc的行只命中一次,我有一个断点,我也面临同样的问题。在null上检查mockMvc是无用的,因为mockMvc每次都会在@Before方法中实例化,因为每次都是null