Gradle为测试定义安全策略

时间:2014-10-07 20:26:26

标签: java junit gradle security-policy

我想通过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时获得安全例外但我不会。

1 个答案:

答案 0 :(得分:0)

Gradle User Guide section 46.2.3有一个关于为测试设置系统属性的示例,该测试与您的不同:

test {
    systemProperties 'property': 'value'
}

也许您可以尝试使用该语法,即

test {
    systemProperties 'java.security.policy': file("$projectDir/security.policy").absolutePath
}