其他分享
首页 > 其他分享> > 从intellij运行时,Spring的初始化方式不同

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

作者:互联网

我想要的intellij工作流是右键单击带有junit @Test注释的方法,然后选择“运行method()”.

由于出现此错误,目前无法正常工作:无法解析字符串值“ ${spring.datasource.url}”中的占位符“ 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:\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"

编辑:还尝试将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命令?

解决方法:

我很高兴删除.iml文件可以解决问题.

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

标签:maven,intellij-idea,integration-testing,spring,java
来源: https://codeday.me/bug/20191119/2036697.html