当前位置: 首页 > 知识库问答 >
问题:

如何JUnit测试Spring Boot的pplication.java

王辉
2023-03-14

抱歉,这似乎是一个无用的行为,但我们有没有办法在Spring Boot(1.3.8.RELEASE)的应用程序上进行junit测试。java这个类除了启动Spring Boot应用程序之外什么都不做?

如下所示:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

       try{
             SpringApplication.run(Application.class, args);
       }catch(Exception e){
             //code here
       }   
    }
}

也许我可以尝试捕捉异常?但我还可以测试什么,以便JUnit测试SpringApplication呢。run()?任何例子都值得赞赏。谢谢大家!

共有2个答案

夏侯林
2023-03-14

也许我可以尝试捕捉异常?但我还可以测试什么,以便JUnit测试SpringApplication呢。run()?任何例子都值得赞赏。谢谢大家!

如果捕获到异常,则使测试失败在这里是无助的,因为测试期间抛出的异常已经导致测试失败(更准确地说是错误)<如果您已经执行了加载整个Spring Boot上下文的测试类(@SpringBootTest),则无需编写测试来检查是否正确加载。

如果应用程序类有一些逻辑,那么应该测试它
例如,您可以声明一个方法,该方法在加载上下文后执行一些处理,并且您希望断言处理按其应做的那样完成。其他示例:您可以在main()方法中传递一些参数,并希望断言该方法按预期使用了这些参数<所有这些都可以用SpringBootTest进行测试。

如果您的应用程序类只执行以下操作:

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

但是,您仍然需要涵盖与某些覆盖工具或组织兼容的测试方法,为其创建集成测试,清楚地记录它,并让集成持续进行,因为加载Spring Boot应用程序需要时间。你可以参考这个问题。

澹台衡
2023-03-14

通常,以下内容足以测试应用程序上下文是否启动。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class ApplicationTests {

    @Test
    public void contextLoads() {
    }
}

但是,如果您想直接测试Application.main,也可以这样测试:

public class ApplicationTest {

    @Test
    public void test()
    {
        Application.main(new String[]{
                "--spring.main.web-environment=false",
                "--spring.autoconfigure.exclude=blahblahblah",
                // Override any other environment properties according to your needs
        });
    }
}
 类似资料:
  • 在使用JUnit进行测试时,我无法理解一些事情,我编写了一些测试,而有些测试似乎可以简单地使用 而且 有些似乎不能与它们一起工作,所以我必须使用 而且 我理解@mockbean是在处理spring容器时使用的,而@mock只是用来复制/模拟某个类及其方法。但是什么时候才是使用@mockbean的最佳时机呢? 上面是我在spring boot应用程序中为一个控制器编写的测试,但当我使用@mock模拟

  • 有没有办法集成测试我的JUnit Jupiter扩展?当然,我可以测试扩展用法的一个很好的例子,但我想测试如下内容: 它没有通过预期的测试吗? 测试结束时写的报告是否正确? 对此有内置的支持吗?

  • 我有一个生成屏幕截图的类: 我的应用程序是用创建的,我需要对它进行测试。但我得到 我的测试: 我试图防止无头异常: 我使用的是spring启动版本1.5.6。 但这无济于事。我得到日志: java.awt.HeadlessException在sun.awt.HeadlesStoolKit.GetScreenSize(headlesStoolKit.java:284)在org.robinhood.i

  • 问题内容: 我的junit测试看起来像是一个漫长的故事: 我创建了4位用户 我删除了1位用户 我尝试使用已删除的用户登录,并确保失败 我使用剩余的3个用户之一登录并确认我可以登录 我从一个用户向另一个用户发送一条消息,并验证该消息是否出现在发件人的发件箱和收件人的收件箱中。 我删除邮件 … … 优点:测试非常有效(非常善于检测错误)并且非常稳定,因为它们仅使用API​​,如果我重构代码,那么测试也

  • 问题内容: 我有一个Java命令行程序。我想创建JUnit测试用例以进行模拟。因为当我的程序运行时,它将进入while循环并等待用户输入。如何在JUnit中模拟呢? 问题答案: 从技术上讲,可以进行切换,但是总的来说,不直接在代码中调用它,而是添加一层间接层,这样输入源就可以从应用程序的某个位置进行控制,这样会更健壮。确切地讲,这是实现的详细信息-依赖项注入的建议很好,但是你不一定需要引入第三方框

  • 我正在学习JUnit测试。我想在JUnit中测试getter和setter,但它不起作用。这是第一节课。 我需要如何更改以测试setter?我如何测试它?