springboottest如何防止运行应用程序

Posted

技术标签:

【中文标题】springboottest如何防止运行应用程序【英文标题】:springboottest how to prevent running application 【发布时间】:2018-11-11 00:34:06 【问题描述】:

我有运行 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】:

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

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

例如:

测试类

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

工作/ETL 课程

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

希望对你有帮助。

【讨论】:

以上是关于springboottest如何防止运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟@springboottest 的应用程序配置或上下文?

如何在@SpringBootTest 之前添加设置并且只运行一次?

如何为不同的应用程序运行相同的 SpringBootTests

如何在多个 SpringBootTests 之间重用 Testcontainers?

如何防止某些 Jenkins 作业同时运行?

如何在@SpringBootTest中动态地启用不同的profiles