Java 如何读取-Dserver.ref VM参数

Java 如何读取-Dserver.ref VM参数,java,tomcat,junit,mockito,Java,Tomcat,Junit,Mockito,Tomcat以vm参数启动:-Dserver.ref=test。此参数的值确定应用程序要读取的属性文件的类型。单元测试还依赖于此属性的值,并且需要匹配Tomcat中设置的内容 我想我只需要在单元测试中自己设置这个属性?我认为没有一种机制可以检查Tomcat中的值-Dserver.ref 这应该可以: final String ref = System.getProperty("server.ref"); ref应等于“test”这应适用于: final String ref = System.

Tomcat以vm参数启动:
-Dserver.ref=test
。此参数的值确定应用程序要读取的属性文件的类型。单元测试还依赖于此属性的值,并且需要匹配Tomcat中设置的内容

我想我只需要在单元测试中自己设置这个属性?我认为没有一种机制可以检查Tomcat中的值
-Dserver.ref

这应该可以:

final String ref = System.getProperty("server.ref");
ref
应等于
“test”

这应适用于:

final String ref = System.getProperty("server.ref");

ref
应该等于
“test”

您应该将读取系统属性的代码放在一个单独的类中,比如实现接口SystemPropertyReader的RealSystemPropertyReader。该类的默认实现将使用System.getProperty()读取属性。类MockSystemPropertyReader的模拟版本将在单元测试中使用,并将返回您告诉它返回的任何内容。

您应该将读取系统属性的代码放在一个单独的类中,如实现接口SystemPropertyReader的RealSystemPropertyReader。该类的默认实现将使用System.getProperty()读取属性。类MockSystemPropertyReader的模拟版本将在单元测试中使用,并将返回您告诉它返回的任何内容。

假设测试在同一个JVM中运行?@user701254:是否要从另一个JVM读取此标志?如果是这样,请尝试使用
jmap
或通过JMX连接到该JVM。如果您感兴趣,我会找到一些代码示例。假设测试在同一个JVM中运行?@user701254:您想从另一个JVM读取此标志吗?如果是这样,请尝试使用
jmap
或通过JMX连接到该JVM。如果您感兴趣,我会找到一些代码示例。+1这是正确的答案。依赖于真实系统属性的测试不是单元测试。+1这是正确答案。依赖于真实系统属性的测试不是单元测试。