Exécution de tests JUnit avec IntelliJ IDEA - " java.sécurité.AccessControlException"
J'essaie d'exécuter des tests JUnit en utilisant IntelliJ Idea 11.1. Mais les tests donnent différents AccessControlExceptions. L'un d'entre eux ci-dessous. Mais ces tests s'exécutent sans problème dans Eclipse.
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)
Dois-je définir des autorisations spéciales pour le coureur de test d'idées? Si oui, comment?
1 answers
Je viens de rencontrer ce problème moi-même, pour au moins faire fonctionner les choses, j'ai copié le fichier java.policy
de <jdk>/jre/lib/security
et ajouté les autorisations suivantes dans le grant
par défaut pour que les tests s'exécutent sous 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";
Vous devrez modifier certains chemins pour répondre aux besoins spécifiques de vos utilisateurs. Avec ces modifications, je ne suis pas encore complètement terminé: il me semble toujours manquer certaines autorisations spécifiques à mon propre code (en particulier: lire un certain nombre de fichiers de propriétés à partir du mien code).