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

Spock框架如何测试Spring Boot应用程序上下文

袁亦
2023-03-14

我使用Spock框架和Groovy脚本来测试我的Java应用程序。对于我创建的所有类,我的项目有100%的测试覆盖率。然而,我注意到覆盖范围显示,名为“app”的主类没有得到充分测试

 package com.test.cli;

 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ConfigurableApplicationContext;

 @SpringBootApplication
 public class App {
  public static void main(String[] args) {
    ConfigurableApplicationContext context = SpringApplication.run(App.class, args);

    App app = context.getBean(App.class);
    app.start();
  }

  private void start() {
    System.out.print("App started ...");
  }

 }

这是我对App类的一个测试:

 package com.test.cli

 import com.test.cli.App
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.test.context.SpringBootTest
 import org.springframework.context.ApplicationContext
 import spock.lang.Specification


 @SpringBootTest(classes = App.class)
 class AppSpecIT extends Specification {

  @Autowired
  ApplicationContext context

  def "it should boot Spring application successfully"() {
    expect: "application context exists"
    context != null
  }

 }

如何用Spock框架充分测试Spring Boot应用程序上下文?

共有1个答案

伯晨
2023-03-14

@springboottest只实例化用@springbootapplication注释的类或通过classes显式配置的任何其他配置类。但是,静态main方法不会执行,而且应该只包含粘合代码SpringApplication.run(app.class,args)。如果您想测试它,那么您必须显式地调用它,但我建议您不要这样做,您可以在这里读到为什么代码覆盖率为100%的悲剧。

如果需要在start之后调用start方法,请使用org.springframework.boot.applicationrunnerorg.springframework.boot.commandlinerunner

 类似资料:
  • null 有人知道实现这些特性的项目吗?(最好是Java:))

  • 我们实际上使用了JUnit和FakeSftpServerRule来测试我们定制的SFTP客户端。效果很好。 最后,我们希望摆脱junit,转而使用spock框架,因为我们试图迁移到groovy。 你们知道FakeSftpServerRule的等价物吗?或者,你们知道把junit规则“转换”成spock规则等价物的方法吗? 非常感谢。

  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

  • 我试图用Maven在SPOCK groovy框架中测试静态java方法。 下面是java类 下面是groovy中的SPOCK测试 和POM文件片段 我在groovy文件夹中有4个测试用例,3个通过,但是这个静态方法测试给出了错误 我正在运行mvn测试来测试这些junits,我尝试将cglib-nodep的版本从3.1更改为2.2.2,但没有成功。 我在包含jar文件之后签入了java构建路径 我还