我需要能够使用在JUnit测试运行期间激活的概要文件。我想知道是否有什么方法可以做到:
String str = System.getProperty("activated.profile[0]");
或任何其他相关方式。。。
我意识到有一个选项可以使用${project.profiles[0].id}
bu,但不知何故它不起作用。
有什么想法吗?
我接下来在pom文件中使用的其他案例:
<profiles>
<profile>
<id>a-profile-id</id>
<properties>
<flag>a-flag-value</flag>
</properties>
</profile>
</profiles>
在java中:
String flagValue = System.getenv("flag");
当使用surefire运行单元测试时,它通常会生成一个新的JVM来运行测试,我们必须将信息传递给新的JVM。这通常可以使用“systemPropertyVariables”标记完成。
我能够使用quickstart Java项目来实现这一点,在该项目中,我将以下内容添加到POM中:
我声明了以下配置文件
<profiles>
<profile>
<id>special-profile1</id>
</profile>
<profile>
<id>special-profile2</id>
</profile>
</profiles>
这是肯定的配置:
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<systemPropertyVariables>
<profileId>${project.activeProfiles[0].id}</profileId>
</systemPropertyVariables>
</configuration>
</plugin>
...
</plugins>
</build>
在单元测试中,我添加了以下内容:
/**
* Rigourous Test :-)
*/
public void testApp()
{
System.out.println("Profile ID: " + System.getProperty("profileId"));
}
在调用没有概要文件的“test”命令时(即使用mvn test
),我得到了以下结果:
------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.fxs.AppTest Profile ID: development Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in com.fxs.AppTest Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
然后我用了mvn-P特别版2测试,我得到了这个
------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.fxs.AppTest Profile ID: special-profile2 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec - in com.fxs.AppTest Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
这将传递第一个活动概要文件的名称。如果我们可能有不止一个活动配置文件,那么我们可能需要使用更多的系统属性。
注意:我使用Maven 3.1.1对其进行了测试
我声明了一些特定于Maven配置文件的属性。我的pom.xml的一部分: 当我通过IntelliJ IDEA 2016启动Junit测试时,我在使用“ci”Maven配置文件时遇到一些问题。我通过“Maven项目”面板激活我的配置文件,然后启动测试。问题是“my.properties.file”属性值等于“foo.xml”,而不是“bar.xml”。 我对命令行没有问题(我可以使用“-Pci”标志
我有5个环境: 我希望对每个环境使用不同的应用程序属性,因此我有以下属性文件,每个属性文件都有不同的数据源URL: 我正在使用IntelliJ并在本地机器上的Gradle插件中使用bootRun运行我的应用程序。我将使用在运行Tomcat的所有其他环境中部署相同的应用程序war文件。 我尝试添加: --spring.profiles.active=local 到脚本参数下的运行配置。 我尝试添加
如何在测试用例的运行时获得当前运行套件的名称?我正在使用下面显示的一段代码来获取当前套件名称。 Listeners类: 在这种情况下,我无法获得套件名称--它没有执行。有人能帮我查一下套房的名字吗?
但却被忽略了。 是否可以使用maven激活配置文件?
Build.Gradle
Maven允许根据其运行的操作系统系列激活某些构建概要文件,例如: 这里有很多问题:那么的允许值是多少?它们区分大小写吗?Linux是吗?还是?等等。 我可以在哪里找到关于允许的值的信息-或者,至少,Maven从哪里获取这些值?环境变量?