@Test public void testProxyGenerationErrorHandling() { doReturn(null).when(proxyBuilder).createProxyClass(any(IProxyBuildPlan.class)); Object proxyA = linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), fakeRootLoader); Object proxyB = linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), fakeRootLoader); verify(proxyBuilder, times(1)).createProxyClass(any(IProxyBuildPlan.class)); assertThat(proxyA, equalTo(null)); assertThat(proxyB, equalTo(null)); }
@Test public void testProxyInvalidPlanHandling() { // classloader does not contain the required depdendencies Object proxyA = linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), this.getClass().getClassLoader()); Object proxyB = linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), this.getClass().getClassLoader()); verify(proxyBuilder, times(0)).createProxyClass(any(IProxyBuildPlan.class)); assertThat(proxyA, equalTo(null)); assertThat(proxyB, equalTo(null)); }
@Test public void testProxyParentClassLoaderCaching() { linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), fakeRootLoader); linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), new ClassLoader(fakeRootLoader) { }); verify(proxyBuilder, times(1)).createProxyClass(any(IProxyBuildPlan.class)); }
@BeforeMethod public void initProxy() throws InvalidProxyDescriptionException { subject = new CorrectProxySubject(); ClassLoader cl = new RenamingClassLoader(this.getClass().getClassLoader(), "moved.", ClassToProxy.class, InterfaceToProxy.class); IProxyBuildPlan plan = ProxyBuildPlanImpl.create(CorrectProxySubject.class, "proxy_" + counter.getAndIncrement(), cl); proxy = builder.createProxyClass(plan).createProxy(subject); }
@Test public void testProxyCaching() { linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), fakeRootLoader); linker.createProxy(CorrectProxySubject.class, new CorrectProxySubject(), fakeRootLoader); verify(proxyBuilder, times(1)).createProxyClass(any(IProxyBuildPlan.class)); }