Java 从intellij运行时,Spring的初始化方式不同

Java 从intellij运行时,Spring的初始化方式不同,java,spring,maven,intellij-idea,integration-testing,Java,Spring,Maven,Intellij Idea,Integration Testing,我希望intellij中的工作流程是右键单击junit@Test注释的方法,然后选择“run method()” 由于以下错误,无法解析字符串值“${spring.datasource.url}”中的占位符“spring.datasource.url” 这是因为在我的application.properties文件中没有定义值,spring.datasource.url,而是在单独的配置文件中定义的 我的集成测试如下所示: @RunWith(SpringJUnit4ClassRunner.cla

我希望intellij中的工作流程是右键单击junit
@Test
注释的方法,然后选择“run method()”

由于以下错误,
无法解析字符串值“${spring.datasource.url}”中的占位符“spring.datasource.url”

这是因为在我的
application.properties
文件中没有定义值,
spring.datasource.url
,而是在单独的配置文件中定义的

我的集成测试如下所示:

@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:\bin\apache-maven-3.3.1\bin\..
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: C:\bin\java\jdk1.8.0_60\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

Edit:还尝试将
spring.profiles.active=h2
添加到intellij测试运行配置中


编辑:我注意到intellij使用以下命令启动测试:

C:\bin\java\jdk1.8.0_60\bin\java  
  -Dmaven.multiModuleProjectDirectory=C:\dev 
  -Dmaven.home=C:\bin\apache-maven-3.3.1 
  -Dclassworlds.conf=C:\bin\apache-maven-3.3.1\bin\m2.conf 
  -Dfile.encoding=windows-1252 
  -classpath 
     C:\bin\apache-maven-3.3.1\boot\plexus-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命令

我删除了
.idea/
和我的项目的
iml
文件并重新导入。这解决了问题。

我很高兴删除.iml文件成功了

另一种可能性。。。
mvn软件包-U
后跟文件->使缓存无效并重新启动。

您确定使用相同版本的maven并设置了相同的路径吗?这是我想回答你的第一个问题的第一个地方。Intellij使用的是maven的捆绑版本3。我将intellij设置为我的shell正在使用的maven 3的本地安装。相同的结果。当您在IntelliJ(Alt-F12)中启动终端并从命令行运行mvn时会发生什么情况?还尝试将spring.profiles.active=h2添加到IntelliJ测试运行配置中。您的.iml文件中是否有优先权?顺便说一句,你系统地思考了这一点,这真是太好了。你可能没有新旧的.iml文件版本。但我想知道你是否知道是什么被删除,从而阻止了配置文件导入失败。不,我没有:(