2012-08-04 249 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"; 

您需要更改一些路徑以適合您的特定用戶需求。 有了這些更改,我還沒有完全完成:我似乎仍然缺少一些特定於我自己代碼的權限(特別是:從我自己的代碼中讀取一些屬性文件)。

相關問題