【问题标题】:Is there a JVM command-line option to change directory?是否有用于更改目录的 JVM 命令行选项?
【发布时间】:2011-10-20 15:59:45
【问题描述】:

简而言之,我想知道,是否有 JVM 命令行选项可以更改起始工作目录?如果它很重要,我正在运行 jdk1.6.0_24。

背景:

我正在使用一个名为 Robolectric for Eclipse 的工具来测试主机 PC 上的 Android 应用程序,而无需仿真。 Robolectric 需要创建一个测试项目,但测试本身要从被测试的 Android 项目中运行。这是通过从 Eclipse 中完成的,在设置中将运行配置设置为被测项目:“在选定的项目、包或源文件夹中运行所有测试。”

如果可能的话,我想从 JVM 命令行选项中执行此操作,因为我使用的另一个工具 Infinitestdoesn't allow 可以指定测试的工作目录。但是,它允许您指定 JVM 命令行选项。

解决方法:

在我找到更好的解决方法之前,一个成功的方法是从 Android 项目中复制 AndroidManifest.xml 和 res 文件夹。

【问题讨论】:

    标签: java android jvm robolectric infinitest


    【解决方案1】:

    在 Java SE 中,“当前目录”被放入系统属性user.dir

    使用 -D 选项手动覆盖此值可能有效:

    java -Duser.dir=/some/directory ....
    

    但是我不知道这是否也适用于Android中使用的JVM

    【讨论】:

    • 坏主意。我所见过的关于这样做的任何事情都说“不要”。充其量是不可靠的。当然,除非这在 Android 中也发生了变化。但这只是一个测试套件,对吧?不在 Android 中运行?
    • 我经常使用这种方法,效果很好。
    • 不建议修改此变量,并且根据this response 是不可靠的。它对我不起作用。
    【解决方案2】:

    “当前工作目录”是一个操作系统概念,而不是 JVM 概念,因此您需要找到该级别的解决方案,例如编写批处理或 shell 脚本。

    【讨论】:

    • 谢谢,但由于问题的背景部分给出的原因,我需要一个命令行选项。
    • 是的,我看到了。我的意思是你不能用 JVM args 来做到这一点。
    • Infinitest 不允许您调用 shell 脚本,只能更改标志。
    【解决方案3】:

    我会考虑在 Maven 构建中运行 robolectric 测试。这使得运行测试变得更加容易。在 Eclipse 中也是如此。并且可能对 Maven 也有无限的支持。

    【讨论】:

    • Infinitest 的文档并不表示支持 Maven。我一直在玩 sbt,并成功地用它构建了我的 Android 应用程序,但还没有将它应用到我的正常开发中。我很确定 sbt 支持在构建后运行某种类型的自动化测试,我认为这将取代无限。
    • 是的,我就是这样构建的。
    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    相关资源
    最近更新 更多