首页 文章

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

提问于
浏览
3

intellij中我想要的工作流程是右键单击junit @Test 带注释的方法,然后选择"run method()" .

由于此错误,此功能现在无效: Could not resolve placeholder 'spring.datasource.url' in string value "${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 时,我没有得到上面的错误 .

QUESTIONS:

  • 为什么我的测试在maven下运行正常而不是intellij?

  • intellij是否以某种方式覆盖 spring.profiles.active

  • 是否可以覆盖 @ActiveProfiles 注释中设置的活动配置文件?


Note :这些是集成测试,但是当我从intellij运行单元测试时,我会得到相同的行为 .


Edit:

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测试运行配置中 .


Edit: 我注意到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

Questions:

  • 为什么intellij试图运行我的应用程序?

  • 有没有办法告诉intellij使用指向单个测试的maven命令?

2 回答

  • 2

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

  • 1

    我很高兴删除.iml文件就可以了 .

    另一种可能性...... mvn package -U 后跟File-> Invalidate Caches和Restart .

相关问题