如何在Eclipse测试时传递-D系统属性?

101

我正在Windows上使用Eclipse进行开发,并在Unix上部署代码。我使用System.getProperty("key")获取系统属性值... 我该如何在Eclipse中传递这些值,以便不必修改代码并且可以在Eclipse中进行调试?

有什么建议吗?

5个回答

142

运行 -> 运行配置, 选择项目, 第二个选项卡: “参数”。顶部框是你的程序,底部框是VM参数,例如:-Dkey=value


1
如果您正在尝试运行Android应用程序,那么这个if语句在哪里? - user678392
为什么我必须使用“D”作为前缀? - Manticore
38
如果你跟我一样笨,*-D参数应该放在虚拟机参数的底部框中,而不是程序参数的顶部框中。/叹息 - ruffin
2
顶部框是传递给“main”方法的“String [] args”。 - jaco0646
8
有没有办法将其设置为默认发生,这样您就不必为多个测试重复手动输入? - Stewart
值是用引号括起来的东西吗? - Sam Ginrich

53

您可以使用 Java 的 System.properties,若要从 Eclipse 中使用它们,您可以:

  1. 在测试 Run Configuration 的 VM 参数中添加 -Dlabel="label_value",如下所示:

eclipse_vm_config

  1. 然后运行测试:

    import org.junit.Test;
    import static org.junit.Assert.assertEquals;
    
    public class Main {
        @Test
        public void test(){
            System.out.println(System.getProperty("label"));
            assertEquals("label_value", System.getProperty("label"));
        }
    }
    
  2. 最后它应该通过测试并在控制台中输出以下内容:

  3. label_value
    

13
您可以向运行配置中添加命令行参数。只需编辑运行配置并将“-Dmyprop=value”(或任何其他内容)添加到VM Arguments框中即可。

4
如果您在“参数”选项卡下说“命令行参数框”时指的是“程序参数框”,那么它无法正常工作!必须输入到“VM参数框”中,就像Bombe上面提到的那样。 - Devang Kamdar

4

这将适用于JUnit。对于TestNG,请使用以下命令

-ea -Dmykey="value" -Dmykey2="value2"

0

是的,这就是方法:

右击您的程序,选择运行 -> 运行配置, 然后在 VM 参数中。

-Denv=EnvironmentName -Dcucumber.options="--tags @ifThereisAnyTag"

然后您可以应用并关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接