我想通过gradle传递一个安全管理器用于Junit测试。 我尝试了jvmargs(不工作),现在我正在使用它:
apply plugin: 'java'
test {
systemProperties << ['java.security.policy': file("$projectDir/security.policy").absolutePath]
}
...
Java类
package hello;
import java.io.*;
import java.lang.*;
public class MyClass {
public void method() {
try {
File file = new File("/etc/passwd");
FileReader fr = new FileReader(file);
char [] a = new char[50];
fr.read(a);
for(char c : a)
System.out.print(c);
fr.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
我的政策是:
grant {
permission java.io.FilePermission "/home/-", "read";
};
因此,我希望在尝试阅读/etc/passwd
时获得安全例外但我不会。
答案 0 :(得分:0)
Gradle User Guide section 46.2.3有一个关于为测试设置系统属性的示例,该测试与您的不同:
test {
systemProperties 'property': 'value'
}
也许您可以尝试使用该语法,即
test {
systemProperties 'java.security.policy': file("$projectDir/security.policy").absolutePath
}