我使用此方法设置参数化数据:
@Parameterized.Parameters
public static Collection<Object[]> getStories() {
Collection<Object[]> allStories = new ArrayList<Object[]>()
new File(SPEC_DIRECTORY).eachFileRecurse(FileType.FILES) { file ->
if (file.getName().endsWith('.story')) {
Object[] args = [file.getName(), file]
allStories << args
}
}
return allStories
}
我通过gradle test
使用gradle调用主要测试,但我似乎无法看到系统属性。
如果我使用调用gradle -Dfile=test.story
,则System.getProperty('file')
未定义。如何将参数传递给此参数化数据构建器?
答案 0 :(得分:5)
Gradle在单独的JVM中运行所有测试。您必须配置test
任务:
test {
systemProperty "file", "test.story"
}
有关详细信息,请参阅Gradle DSL reference。
答案 1 :(得分:1)
为了那些偶然发现这个问题的初学者(像我一样)的利益;我想明确提到gradle测试任务中的systemProperty只是将系统属性传递给测试jvm。所以,如果你只是使用
test{
systemProperty 'Chrome', 'Browser' }
您无法通过&#39;在junit测试中访问该媒体资源。 System.getProperty(&#34;浏览器&#34;)&#39; 。相反,它需要与命令gradle test -DBrowser = Chrome
结合使用以上情况仅仅是一个例子,使用 -
可能是有意义的test{
systemProperty 'Chrome', System.getProperty('Browser') }
与
一起gradle test -DBrowser=Chrome