我有一个标准的Application类,它运行一个Spring batch ETL:
@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,然后执行测试。如何阻止应用程序运行?
发布于 2018-06-01 09:05:18
我认为有很多选择,这真的取决于你试图实现的目标。
其中一个选项是使用特定的配置文件(如testing
)运行测试,并将ETL(我假设它们只是作业)配置为基于某些属性或特定配置文件。
例如:
测试类
@ActiveProfiles("testing")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MyServiceTest {
...
}
作业/ETL类
@Component
@Profile("!testing")
public class JobEtlService {
}
希望能有所帮助。
https://stackoverflow.com/questions/50633733
复制相似问题