代码之家  ›  专栏  ›  技术社区  ›  Nizar B.

Spock框架如何测试spring引导应用程序上下文

  •  1
  • Nizar B.  · 技术社区  · 8 年前

     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 ...");
      }
    
     }
    

     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
      }
    
     }
    

    你可以在这个屏幕截图中看到,12到18行没有覆盖,我想修正一下: App Test coverage result

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

    1 回复  |  直到 8 年前
        1
  •  3
  •   Leonard Brünings    8 年前

    @SpringBootTest 仅实例化带注释的类 @SpringBootApplication 或通过显式配置的任何其他配置类 classes main 方法不执行,并且应该只包含粘合代码 SpringApplication.run(App.class, args) The tragedy of 100% code coverage .

    如果需要在启动后调用类似start方法的内容,请使用 org.springframework.boot.ApplicationRunner org.springframework.boot.CommandLineRunner 相反