所以我有类似
的东西<junit fork="true" forkmode="perTest">
<jvmarg value="-Darg.to.pass.our.tests.one=arg1">
<jvmarg value="-Darg.to.pass.our.tests.two=arg2">
<jvmarg value="-Darg.to.pass.our.tests.three=arg3">
...
<jvmarg value="-Darg.to.pass.our.tests.enn=argN">
</junit>
我知道理想是分叉一次,但由于我不打算进行测试,这是不可能的。
我的问题是,我可以这样做:
<junit fork="true" forkmode="perTest">
<jvmargs file="standard_args.properties">
</junit>
我正在寻找在测试执行时指定不同参数的自由。
我知道我能做到
<junit fork="true" forkmode="perTest">
<jvmarg value="${arg.one}">
<jvmarg value="${arg.two}">
...
<jvmarg value="${arg.enn}">
</junit>
并且我确实使用了这种方法,但这会对传递的参数的确切数量产生期望。
有什么想法吗?
答案 0 :(得分:1)
由于您传递给测试的所有属性都是系统属性(-Dxxx = yyy),因此您应该考虑使用syspropertyset
(JUnit的c.f. ant文档):
<property file="standard_args.properties"/>
...
<junit fork="true" forkmode="perTest">
<syspropertyset>
<propertyref prefix="standard.arg"/>
</syspropertyset>
</junit>
假设您的属性文件standard_args.properties
包含测试的属性,并且所有这些属性都以特定模式开头(例如上例中的standard.arg
)。