首页 文章

在单元测试中重用Spring Mockmvc

提问于
浏览
1

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?对于每次测试来说,设置和拆卸似乎都是一项昂贵的操作 .

任何帮助将不胜感激,谢谢 .

1 回答

  • 0

    如果设置了一个 @Before 方法,它不会覆盖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();
        }
    }
    

相关问题