Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建使用特定JVM参数运行的Spring启动测试_Java_Spring_Spring Boot_Testing_Jvm - Fatal编程技术网

Java 如何创建使用特定JVM参数运行的Spring启动测试

Java 如何创建使用特定JVM参数运行的Spring启动测试,java,spring,spring-boot,testing,jvm,Java,Spring,Spring Boot,Testing,Jvm,我希望为我的spring boot应用程序创建一个使用特定JVM参数的测试,我希望JVM参数仅用于此测试 这可能吗?我的目标是只为一个测试设置一个代理,因此如果有其他方法可以实现这一点,请提出建议。如果您使用IntelliJ Idea,您可以通过运行/调试配置->虚拟机选项向测试传递参数。 如果您使用的是Maven,则可以在surefire插件配置中传递参数: org.apache.maven.plugins maven surefire插件 -Xmx1G 请记住,Maven选项会覆盖Ide

我希望为我的spring boot应用程序创建一个使用特定JVM参数的测试,我希望JVM参数仅用于此测试


这可能吗?我的目标是只为一个测试设置一个代理,因此如果有其他方法可以实现这一点,请提出建议。

如果您使用IntelliJ Idea,您可以通过运行/调试配置->虚拟机选项向测试传递参数。 如果您使用的是Maven,则可以在surefire插件配置中传递参数:


org.apache.maven.plugins
maven surefire插件
-Xmx1G

请记住,Maven选项会覆盖Idea默认值(如果已设置)。

我通过在类中添加一个静态块并设置系统属性来解决这个问题:

static {
    System.setProperty("http.proxyHost", "myproxyserver.com");
    System.setProperty("http.proxyPort", "80");
    System.setProperty("https.proxyHost", "myproxyserver.com");
    System.setProperty("https.proxyPort", "80");
}

谢谢您的回答,但是,我正在寻找一种方法,使JVM参数只包含一个特定的测试。我认为这会将参数添加到多个测试中。您可以在Idea运行/调试配置中指定确切的Junit测试名称,请查看在使用maven构建项目时何时运行测试?我希望这不仅仅适用于IntelliJ的本地测试。对不起,我忘了在上次评论中提到这一点。你在之前考虑过<代码> @ Beoprass<代码>或代码> @吗?在这些中,您可以使用
System.setProperty(…)
设置属性。感谢您的建议,我使用了
System.setProperty(…)
,但是使用了一个静态的bloc。好吧,我建议在
@BeforeClass
/
@BeforeClass
之前使用
@AfterClass
之后使用
@BeforeClass>来取消设置属性。。。使用静态块,您可以为所有测试设置它,我会说…是的,我尝试了
@Before
注释,但它没有改变任何内容,而且
@BeforeClass
注释会导致错误(我不确定原因)。使用静态块对我来说是一个很好的解决方案,因为测试类只有一个测试,此外,
@Before
在每个测试之前运行,所以没有区别。很可能它不起作用,因为需要它的组件(是HttpClient吗?)已经创建(我的意思是可能上下文已经初始化,并且bean正在使用设置)在你设置它之前。如果您现在有一个新的测试,它不想使用设置,这是不可能的…我不知道是否有解决方案(设置会影响所有测试),但正如我所说的,因为我对一个包含一个测试的类使用它,这很好。也许我应该在回答中提到它,因为问题是关于一个测试的设置,而不是测试套件。我尝试在
@SpringBootTest(properties={…})
中设置属性,但效果不好。上面的解决方案是如何工作的?干得好!