2012-08-04 203 views
4

我想使用IntelliJ Idea 11.1运行JUnit测试。但是测试给出了不同的AccessControlExceptions。其中之一在下面。但是这些测试在Eclipse中运行时没有问题。使用IntelliJ IDEA运行JUnit测试 - “java.security.AccessControlException”

Exception in thread "main" java.security.AccessControlException: access denied (java.lang.RuntimePermission setIO) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    at java.security.AccessController.checkPermission(AccessController.java:546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at java.lang.System.checkIO(System.java:225) 
    at java.lang.System.setOut(System.java:147) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

我是否需要为IDEA测试运行器设置某种特殊权限?如果是这样如何?

+0

你是从菜单上运行它们吗?你使用Spring来运行它们还是只使用简单的JUnit?你还在测试中使用System.out ...吗?看起来有些东西想从堆栈跟踪中设置它 – RNJ 2012-08-04 08:40:41

+1

您是否使用自定义的'-Djava.security.policy'运行? – CrazyCoder 2012-08-04 10:31:20

+0

@ user846476是的。我正在使用菜单中的运行命令运行它们。这是简单的JUnit。我检查了测试文件,并且没有System.out ... s – Nufail 2012-08-06 00:15:55

回答

1

我只是碰到了这个问题我自己,至少得跑的东西,我从<jdk>/jre/lib/security复制java.policy文件并添加默认grant以下权限下得到的IntelliJ IDEA 2016.2运行测试:

// To get tests working under IntelliJ 2016.2 
    permission java.util.PropertyPermission "idea.launcher.bin.path", "read"; 
    permission java.lang.RuntimePermission "loadLibrary.C:\\Program Files (x86)\\JetBrains\\IntelliJ IDEA 2016.2\\bin\\breakgen64.dll"; 
    permission java.util.PropertyPermission "idea.launcher.port", "read"; 
    permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; 
    permission java.util.PropertyPermission "idea.is.junit5", "read"; 
    permission java.net.SocketPermission "127.0.0.1:*", "connect,resolve"; 
    permission java.util.PropertyPermission "user.home", "read"; 
    permission java.io.FilePermission "C:\\Users\\Mark\\junit.properties", "read"; 
    permission java.lang.RuntimePermission "setIO"; 
    permission java.io.FilePermission "C:\\Users\\Mark\\AppData\\Local\\Temp\\*", "read"; 
    permission java.lang.RuntimePermission "accessDeclaredMembers"; 

您需要更改一些路径以适合您的特定用户需求。 有了这些更改,我还没有完全完成:我似乎仍然缺少一些特定于我自己代码的权限(特别是:从我自己的代码中读取一些属性文件)。