在ant junit任务中更改工作目录

我有一个运行JUnits测试的ant文件。 这些测试依赖于某些配置文件的相对路径。 我已经尝试为批处理测试设置工作目录,但是失败了。

我希望工作目录为${plugins.dir}/${name}

Ant脚本的JUnit部分:

                 

我用谷歌搜索和搜索,但我找到的解决方法是设置“dir”,“sysproperty”或“jvmarg”。 如你所见,我已经尝试过所有:)

有没有办法在标签中打印当前目录? 它不支持。 这将允许我validation目录是否实际改变了什么。

这个等式中的一个通配符是,这是在Hudson中运行的,它启动了一个启动atrunner的eclipse过程。 这样我们就可以运行junit和eclipse插件junit测试了。 我认为不应该与这个问题有任何关系。

我认为你设置basedir属性是正确的(参见项目属性 )。 但是,由于它是ANT(而不是JVM)的属性,因此它只是READ!

如果在调用ant任务时设置basedir会影响其他目标吗? 请参阅命令行参考 。

 ant -Dbasedir=somedir 

或者,跨越一个新的ant进程来调用你的junit目标。 请参阅AntCall任务或Ant任务 。 以下示例假定junit目标包含您的junit任务。 我将此任务用于其他属性(到目前为止从未需要basedir属性)。

     

我有相同的场景,在我的情况下,我看到如果在同一个jvm中运行,则忽略dir="...."因此我只是添加了fork='true'并且它有效。

引用Apache的文档站点“ dir – 调用VM的目录。如果禁用fork,则忽略。 ”。 更多这里 。

我正在使用NetBeans。 当我添加到Ant属性(来自Tools,Options,Java,Ant)时, work.dir=C:/MyWorkingDir/它使用以下命令执行ant并将工作目录更改为C:\MyWorkingDir

 ant -f D:\\workspace\\lib\\project -Dfork=true -Djavac.includes=com/myapp/MyTest.java -Dtest.includes=com/myapp/MyTest.java "-Dwork.dir=C:/MyWorkingDir/" test-single