在开始测试之前运行另一个项目的Web服务

时间:2015-06-03 08:03:42

标签: spring junit spring-data-rest spring-test

IntelliJ项目有两个模块:Spring Data Rest应用程序和客户端。这两个应用都是Spring可启动应用。我在客户端做了很多测试,现在在每次测试迭代之前,我必须手动运行其余的服务。 测试类看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BusinessRepositoryImpl.class})
public class BusinessLogoRepositoryTest {
..
}

这是服务:

@EnableAutoConfiguration
@ImportResource({
        "classpath:spring/persistenceContext.xml"
})
@Import(DataServiceConfiguration.class)
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

所以问题是,是否有可能以某种方式将服务上下文添加到测试类并在测试开始之前运行服务。

1 个答案:

答案 0 :(得分:0)

您可以使用@BeforeClass和@AfterClass注释的2个方法创建TestSuite,以在测试之前启动服务,并在测试完成后停止它。

草图代码可视化:)我的意思如下。

@RunWith(SpringJUnit4ClassRunner.class)
@SuiteClasses({UnitTest1.class, UnitTest2.class, ... })

@EnableAutoConfiguration
@ImportResource({
    "classpath:spring/persistenceContext.xml"
})
@Import(DataServiceConfiguration.class)

public class TestSuite {

    @BeforeClass
    public void start() throws Exception {
        SpringApplication.run(Application.class, args);
    }

    @AfterClass
    public void start() throws Exception {
        SpringApplication.shutdown();
    }
}