Spring инициализируется по-разному при запуске из intellij


Мой желаемый рабочий процесс в intellij состоит в том, чтобы щелкнуть правой кнопкой мыши аннотированный метод junit @Test и выбрать "run method()".

Это не работает прямо сейчас из-за этой ошибки: Could not resolve placeholder 'spring.datasource.url' in string value "${spring.datasource.url}"

Это происходит до тех пор, пока значение spring.datasource.url не определено в моем файле application.properties, а скорее в отдельных профилях.

Мой интеграционный тест выглядит так:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Api.class)
@IntegrationTest
@WebAppConfiguration
@ActiveProfiles(profiles = "h2")
public class ServiceIntegrationTest {

application-h2.properties имеет spring.datasource.url определенное значение.

Когда я запускаю mvn test из командной строки, я не получаю ошибку выше.

Вопросы:

  • Почему мои тесты работают правильно под maven, а не intellij?
  • является ли intellij каким-то образом переопределяющим spring.profiles.active?
  • можно ли переопределить активные профили, заданные в аннотации @ActiveProfiles?

Примечание : это интеграционные тесты, но я получаю то же самое поведение при запуске модульных тестов из intellij.


Редактировать:

C:intellij-terminal>mvn -version
Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-13T15:10:27-05:00)
Maven home: C:binapache-maven-3.3.1bin..
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: C:binjavajdk1.8.0_60jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

Edit : также пытался добавить spring.profiles.active=h2 в конфигурацию тестового запуска intellij.


Edit: я заметил, что intellij начинает свои тесты с этой команды:

C:binjavajdk1.8.0_60binjava  
  -Dmaven.multiModuleProjectDirectory=C:dev 
  -Dmaven.home=C:binapache-maven-3.3.1 
  -Dclassworlds.conf=C:binapache-maven-3.3.1binm2.conf 
  -Dfile.encoding=windows-1252 
  -classpath 
     C:binapache-maven-3.3.1bootplexus-classworlds-2.5.2.jar 
     org.codehaus.classworlds.Launcher 
  -Didea.version=14.1.5 
  org.springframework.boot:spring-boot-maven-plugin:1.2.5.RELEASE:run

Вопросы:

  • Почему intellij пытается запустить мое приложение?
  • Есть ли способ заставить intellij использовать команды maven, направленные на один тест?
2 3

2 ответа:

Я рад, что удаление .файл iml сделал свое дело.

Еще одна возможность... mvn package -U, за которым следует File - > Invalidate Caches и перезапуск.

Я удалил .idea/ и файл моего проекта iml и переназначил его. Это исправило проблему.