簡體   English   中英

春季啟動:應用程序加載但測試失敗

[英]spring-boot: Application loads but tests fail

使用Spring Boot時,我遇到了相當奇怪的事情。 讓我們開始吧。 我有一個應用程序,當從spring-boot:run運行時,可以很好地加載,並且可以使用我的服務器。 但是,如果我嘗試運行測試(通過從IntelliJ啟動測試或通過surefire插件),則無法加載上下文。

問題在於此類(僅顯示相關部分):

@RestController
@RequestMapping(
  value = "/sa/revisions/"
)
@SuppressWarnings("unchecked")
class RevisionController {
  @Autowired
  // cant autowire this field
  private RepositoryEntityLinks   repositoryEntityLinks = null;
  /* omitted */
}

這是我的主要課程:

@EnableAsync
@EnableCaching
@EnableAutoConfiguration
@EnableConfigurationProperties
@Import({
  SecurityConfiguration.class,
  DataConfiguration.class,
  RestConfiguration.class
})
public class SpringAtomApplication {
  @Autowired
  private DataLoaderManager dataLoaderManager = null;

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

  @Bean
  public CacheManager cacheManager() {
    final GuavaCacheManager manager = new GuavaCacheManager();
    manager.setAllowNullValues(false);
    return manager;
  }

  @PostConstruct
  private void doPostConstruct() {
    this.dataLoaderManager.doLoad();
  }
}

就像我說的那樣,正常運行時應用程序加載沒有問題,但是,就這個簡單的測試而言,一切都崩潰了:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringAtomApplication.class)
public class SpringAtomApplicationTests {
  @Test
  public void contextLoads() {
  }
}

將不勝感激任何建議,因為我很樂意從測試開始。

您應該在測試類中設置SpringApplicationContextLoader

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(
    classes = SpringAtomApplication.class, 
    loader = SpringApplicationContextLoader.class)
public class SpringAtomApplicationTests {
  @Test
  public void contextLoads() {
  }
}

這樣一來,您可以測試非Web功能(例如存儲庫或服務),或啟動完全配置的嵌入式Servlet容器,並使用MockMvc運行測試。

參考: http : //docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/SpringApplicationContextLoader.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM