0

我有运行 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,然后执行测试。如何阻止应用程序运行?

4

1 回答 1

0

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

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

例如:

测试班

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

作业/ETL 课程

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

希望能帮助到你。

于 2018-06-01T01:05:17.547 回答