I found out that I don't need to call the service manager directly to get a specific service. Instead of calling ServiceManager.getService(project, MyService.class) I just specify the service as an argument in the constructor of the class that needs that service. Since IDEA creates the used instance of that class using a PicoContainer the dependency is filled in automatically. That enables me to write JUnit tests that mock those other services such as the ActionManager, the Application and my own other services away.
My plugin uses hand coded action groups that I wanted to replace with action groups defined in my plugin.xml. The problem is now: Actions registered in the plugin.xml need no-args-constructors. That's a bit weird. Why aren't those actions also created by the PicoContainer?
Well, there is a way around this problem: Register all actions and the containing action groups as project services, but that's a bit strange since there is a separate mechanism for registering actions.