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

如何使用具有不同数据的同一测试类执行Spring Rest控制器测试?,spring,rest,testing,junit,Spring,Rest,Testing,Junit,我目前正试图为我的SpringREST控制器编写非常简单的集成测试 假设我的测试类如下所示: @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc public class RealNewTest2 { @Autowired private MockMvc mvc; @Test public void test() throws Exception { mvc.pe

我目前正试图为我的SpringREST控制器编写非常简单的集成测试

假设我的测试类如下所示:

@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完全相同。

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

这正是我所需要的,我自己怎么没想到。。不管怎样,搞定了,谢谢!不过要小心。我最近为此过度设计了一个基类,结果造成了太多的麻烦。有些事情可能值得明确重复,而不是试图将每一个共享行为都放在一个地方。