2017-02-22 96 views
9

Получение ошибки компиляции в Maven:SpringApplicationConfiguration не найден: Неверное тестовое тестовое тестовое тестовое содержание?

[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/prototypes/demo-sse-spring-boot-master/src/test/java/com/cedric/demo/sse/SseDemoApplicationTests.java:[6,37] package org.springframework.boot.test does not exist 
[ERROR] /C:/TITAN/demo-sse-spring-boot-master/src/test/java/com/cedric/demo/sse/SseDemoApplicationTests.java:[10,2] cannot find symbol 
    symbol: class SpringApplicationConfiguration 
[INFO] 2 errors 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 

Maven репо, кажется, есть банку подарок:

enter image description here

howerever, что банку не имеет каких-либо скомпилированные классы внутри него. только META-INF реж:

enter image description here

Это дизайн? Где я могу получить банку, содержащую SpringApplicationConfiguration класс, чтобы сделать Maven счастливым?

Вот соответствующие части моего pom.xml:

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.1.RELEASE</version> 
     <relativePath/> 
     <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars.bower</groupId> 
      <artifactId>jquery</artifactId> 
      <version>2.1.3</version> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>3.3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      <version>1.16.4</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

ответ

11

spring-boot-starter-test, как и все другие стартеров Spring загрузочных, на самом деле просто англичанин, который тянет в ряде других зависимостей транзитивна. У этого есть только jar, чтобы держать некоторые системы сборки, которые не любят pom-только зависимости счастливы.

Похоже, вы обновили приложение от Spring Boot 1.4 до Spring Boot 1.5. Spring Boot 1.5 удаляет несколько классов, которые были устаревшими в 1.4, включая org.springframework.boot.test.SpringApplicationConfiguration.

Я бы порекомендовал отказаться от Spring Boot 1.4.4.RELEASE и исправить все предупреждения об устаревании. Затем вы можете без проблем обновить до Spring Boot 1.5.1.RELEASE.

+0

Да, этот трюк работал для меня, спасибо. Не могли бы вы указать мне на подробное описание того, как работает эта настройка Maven, которая позволяет ему вытягивать зависимости без необходимости перечислять их, а не совсем понятно, почему 1.5.1.RELEASE не удалось это сделать, это основная версия на котором было принято решение прекратить поддержку устаревших предметов? Еще раз спасибо. –

37

В вашем выпуске аннотации @SpringApplicationConfiguration больше не существует. Новые аннотации:

@RunWith(SpringRunner.class) 

@SpringBootTest(classes = YourApplicationMainClass.class) 

@WebAppConfiguration 
4

Как ошибка связан с обновлением весна Ботинок от 1,4 до 1,5, важно отметить (снизу), что несколько новых классов, которые вводятся в 1.4 осуждаются некоторые из существующих классы, ведущие к окончательному удалению в 1.5. Детали таких можно найти по адресу: Spring boot release notes

Цитируется с сайта (под редакцией):

Кроме того, Spring Ботинок 1,4 (и выше) пытается рационализировать и упростить различные способы, что тест Spring загрузки может быть запущен ,Вы должны мигрировать следующее использовать новый @SpringBootTest аннотацию:

От @SpringApplicationConfiguration(classes=MyConfig.class) к @SpringBootTest(classes=MyConfig.class)

От @ContextConfiguration(classes=MyConfig.class, loader=SpringApplicationContextLoader.class) к @SpringBootTest(classes=MyConfig.class)

С @IntegrationTest в @SpringBootTest(webEnvironment=WebEnvironment.NONE)

От @IntegrationTest с @WebAppConfiguration в @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

От @WebIntegrationTest к @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

Подсказка Хотя мигрирующие тестов вы также можете заменить любые @RunWith(SpringJUnit4ClassRunner.class) декларации с Spring 4.3-х более читаемым @RunWith(SpringRunner.class).

+0

Соответственно: '@SpringBootTest (classes = YourApplicationMainClass.class)' и '@ WebIntegrationTest' вместе из более ранних версий преобразуется в один оператор в' @SpringBootTest (classes = YourApplicationMainClass.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) ' – VanagaS