springboottest如何防止运行应用程序

时间:2018-05-31 22:36:32

标签: spring-boot springjunit4classrunner

我有运行Spring批处理ETL的标准Application类:

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

我的Junit测试做了类似的事情:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MyServiceTest {

    @Autowired
    MyService myService;

    @Test
    public void testInsertions() {
        //do stuff with assertions
    }
}

我的问题是,当我执行junit测试时,应用程序也会启动ETL然后执行测试。如何防止应用程序运行?

1 个答案:

答案 0 :(得分:0)

我认为有很多选择,这实际上取决于你想要实现的目标。

其中一个选项是使用特定的配置文件运行测试,例如testing,并配置您的ETL (我假设它们只是工作)是根据某些属性或特定配置文件进行配置。

例如:

测试类

@ActiveProfiles("testing")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MyServiceTest {
    ...
}

工作/ ETL课程

@Component
@Profile("!testing")
public class JobEtlService {
}

希望它有所帮助。