使用嵌入式Cassandra加速Spring MockMvc集成测试

Mri*_*jay 7 java junit spring-test cassandra

我们正在使用MockMvc Framework来使用JUnit测试Spring Controllers.控制器返回一个DefferedResult.

mockmvc.perform看起来像波纹管

mockMvc.perform(post("/customer")
                .accept(APPLICATION_JSON)
                .header(AUTH_TOKEN_KEY, "xyz")
                .header(FROM_KEY, "email@gmail.com")
                .content(json)
                .contentType(APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(request().asyncStarted());
Run Code Online (Sandbox Code Playgroud)

这需要很多时间.我们正在使用嵌入式cassandra,因此需要花费很多时间.

我也尝试了这个,但它也一样.

MvcResult mvcResult = mockMvc.perform(post("/customer")
            .accept(APPLICATION_JSON)
            .header(AUTH_TOKEN_KEY, "xyz")
            .header(FROM_KEY, "email@gmail.com")
            .content(json)
            .contentType(APPLICATION_JSON))
            .andReturn();

mockMvc.perform(asyncDispatch(mvcResult))
            .andExpect(status().isOk())
            .andExpect(request().asyncStarted());
Run Code Online (Sandbox Code Playgroud)

我有数百个测试,因为构建过程非常慢.

有没有办法,使用JUnit我可以说执行请求并等待另一个线程中的响应来断言结果,或者任何其他加速它的好方法.

谢谢

Mri*_*jay 1

正如我在问题中提到的我们正在使用嵌入式 cassandra,因此需要花费大量时间。

我尝试查看cassandra.yaml文件中的内容并更改了下面的行。

commitlog_sync_batch_window_in_ms: 90
Run Code Online (Sandbox Code Playgroud)

commitlog_sync_batch_window_in_ms: 1
Run Code Online (Sandbox Code Playgroud)

仅此而已,构建时间从 30 分钟减少到 2 分钟。

来自 cassandra.yaml 评论:-

commitlog_sync_batch_window_in_ms在执行同步之前,它将等待其他写入长达几毫秒。

减少这个时间后,等待时间和构建时间都减少了。