如何测试spring Boot main()方法? [复制]

Posted

技术标签:

【中文标题】如何测试spring Boot main()方法? [复制]【英文标题】:how to test springBoot main() method? [duplicate] 【发布时间】:2019-06-14 19:31:35 【问题描述】:
@RunWith(SpringRunner.class)
@SpringBootTest
public class BankMainAppTest 

    /**
     * Test App load without throwing an exception.
     */
    @Test
    public void contextLoads() 
    //pass

    @Test
    public void applicationStarts() 
        BankMainApp.main(new String[] );
    //fail throw exception given below..

java.lang.IllegalArgumentException:无法实例化工厂类: org.springframework.boot.env.EnvironmentPostProcessor

【问题讨论】:

您为什么要这样做?如果应用程序运行,可以说它的 main 方法有效 ***.com/questions/46650268/…的可能重复 @Stultuske 根据发布的代码,可能是为了覆盖(我同意这不是公平的理由)。 【参考方案1】:

要么用@SpringBootTest注释测试类并声明一个空的测试方法,要么不注释测试类但在测试方法中调用main()方法。 但不要两者都做。 在这里您执行此操作,它会启动一个容器(在测试执行之前),然后启动另一个容器(在方法测试中)。

注意,如果你不需要断言,因为测试只是为了覆盖率,使用的成语是第二种方式:

public class BankMainAppIT 
   @Test
   public void main() 
      BankMainApp.main(new String[] );
   

【讨论】:

以上是关于如何测试spring Boot main()方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring Boot 测试 Maven 模块项目

Spring Boot Main 类 Junit 测试抛出错误

java - 如何使用SpringJUnit4TestRunner在junit测试中隐藏spring boot banner.txt?

Spring Boot 集成测试。如何测试“删除”方法?

如何使用 JUnit 测试 Spring Boot aspectj 方法?

在 Spring Boot 应用程序中分离集成测试