如何使用相同的测试类对不同的数据执行Spring Rest控制器测试?

时间:2018-07-27 09:49:17

标签: spring rest testing junit

我目前正在尝试为Spring REST控制器编写非常简单的集成测试。

让我们说我的测试课看起来像这样:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class RealNewTest2 {

    @Autowired
    private MockMvc mvc;

    @Test
    public void test() throws Exception {
        mvc.perform(
                get(GET_URL).
                with(httpBasic("user","pass"))).
        andExpect(status().isOk());


        System.out.println("Test done.");
    }

}

我想执行一个非常基本的测试用例,以测试所有调用(GET,POST,PUT,DELETE)等。我所有的REST控制器都非常相似。我正在考虑的目标是,我将拥有所有控制器的测试数据,例如进行PUT测试时使用的JSON对象,然后具有控制器使用的URL /映射。我所有的控制器映射都相同,除了最后一部分,例如mysite / accounts和mysite / countries。

所以我有什么办法可以编写一个测试用例来执行所有这些REST调用,然后使用不同的url和JSON对象再次运行它,因此我不必编写太多的测试用例,因为它们是仅进行非常基础的测试,并且对JSON对象和REST URL的期望基本上是完全相同的。

1 个答案:

答案 0 :(得分:1)

创建一个名为AbstractControllerTest之类的类,并将所需的共享行为放入其中。然后,您的控制器测试类可以从中扩展。您可以通过构造函数来自定义测试类的参数(例如URL)。