Framework implements FrameworkMBean { public long installBundle(String location) throws IOException { try { Bundle bundle = context.installBundle(location); return bundle.getBundleId(); } catch (Exception e) { IOException ioex = new IOException("Installation of a bundle with location " + location + " failed with the message: " + e.getMessage()); ioex.initCause(e); throw ioex; } } Framework(BundleContext context, StartLevel startLevel, PackageAdmin packageAdmin); long[] getDependencyClosure(long[] bundles); int getFrameworkStartLevel(); int getInitialBundleStartLevel(); String getProperty(String key); long[] getRemovalPendingBundles(); long installBundle(String location); long installBundleFromURL(String location, String url); InputStream createStream(String url); CompositeData installBundles(String[] locations); CompositeData installBundlesFromURL(String[] locations, String[] urls); void refreshBundle(long bundleIdentifier); boolean refreshBundleAndWait(long bundleIdentifier); void refreshBundles(long[] bundleIdentifiers); CompositeData refreshBundlesAndWait(long[] bundleIdentifiers); boolean resolveBundle(long bundleIdentifier); boolean resolveBundles(long[] bundleIdentifiers); CompositeData resolve(long[] bundleIdentifiers); void restartFramework(); void setBundleStartLevel(long bundleIdentifier, int newlevel); CompositeData setBundleStartLevels(long[] bundleIdentifiers, int[] newlevels); void setFrameworkStartLevel(int newlevel); void setInitialBundleStartLevel(int newlevel); void shutdownFramework(); void startBundle(long bundleIdentifier); CompositeData startBundles(long[] bundleIdentifiers); void stopBundle(long bundleIdentifier); CompositeData stopBundles(long[] bundleIdentifiers); void uninstallBundle(long bundleIdentifier); CompositeData uninstallBundles(long[] bundleIdentifiers); void updateBundle(long bundleIdentifier); void updateBundleFromURL(long bundleIdentifier, String url); CompositeData updateBundles(long[] bundleIdentifiers); CompositeData updateBundlesFromURL(long[] bundleIdentifiers, String[] urls); void updateFramework();  }
@Test public void testInstallBundle() throws Exception { Bundle bundle = Mockito.mock(Bundle.class); Mockito.when(context.installBundle("file:test.jar")).thenReturn(bundle); Mockito.when(bundle.getBundleId()).thenReturn(Long.valueOf(2)); long bundleId = mbean.installBundle("file:test.jar"); Assert.assertEquals(2, bundleId); Mockito.reset(context); Mockito.when(context.installBundle("file:test2.jar")).thenThrow(new BundleException("location doesn't exist")); try { mbean.installBundle("file:test2.jar"); Assert.fail("Shouldn't go to this stage, location doesn't exist"); } catch (IOException e) { } }