提交 9ed180a8 编写于 作者: C Chris Beams

prepping .intstrument.classloading unit tests for move from .testsuite -> .context

上级 29526096
......@@ -16,16 +16,19 @@
package org.springframework.instrument.classloading;
import junit.framework.TestCase;
import static org.junit.Assert.assertSame;
import org.junit.Test;
import org.springframework.util.ClassUtils;
/**
* @author Costin Leau
* @author Juergen Hoeller
* @author Chris Beams
*/
public class InstrumentableClassLoaderTests extends TestCase {
public class InstrumentableClassLoaderTests {
@Test
public void testDefaultLoadTimeWeaver() {
ClassLoader loader = new SimpleInstrumentableClassLoader(ClassUtils.getDefaultClassLoader());
ReflectiveLoadTimeWeaver handler = new ReflectiveLoadTimeWeaver(loader);
......
......@@ -16,36 +16,33 @@
package org.springframework.instrument.classloading;
import junit.framework.TestCase;
import org.springframework.test.AssertThrows;
import static org.junit.Assert.*;
import java.lang.instrument.ClassFileTransformer;
import java.security.ProtectionDomain;
import org.junit.Test;
/**
* Unit tests for the {@link ReflectiveLoadTimeWeaver} class.
*
* @author Rick Evans
* @author Chris Beams
*/
public final class ReflectiveLoadTimeWeaverTests extends TestCase {
public final class ReflectiveLoadTimeWeaverTests {
public void testCtorWithNullClassLoader() throws Exception {
new AssertThrows(IllegalArgumentException.class) {
public void test() throws Exception {
new ReflectiveLoadTimeWeaver(null);
}
}.runTest();
@Test(expected=IllegalArgumentException.class)
public void testCtorWithNullClassLoader() {
new ReflectiveLoadTimeWeaver(null);
}
public void testCtorWithClassLoaderThatDoesNotExposeAnAddTransformerMethod() throws Exception {
new AssertThrows(IllegalStateException.class) {
public void test() throws Exception {
new ReflectiveLoadTimeWeaver(getClass().getClassLoader());
}
}.runTest();
@Test(expected=IllegalStateException.class)
public void testCtorWithClassLoaderThatDoesNotExposeAnAddTransformerMethod() {
new ReflectiveLoadTimeWeaver(getClass().getClassLoader());
}
public void testCtorWithClassLoaderThatDoesNotExposeAGetThrowawayClassLoaderMethodIsOkay() throws Exception {
@Test
public void testCtorWithClassLoaderThatDoesNotExposeAGetThrowawayClassLoaderMethodIsOkay() {
JustAddTransformerClassLoader classLoader = new JustAddTransformerClassLoader();
ReflectiveLoadTimeWeaver weaver = new ReflectiveLoadTimeWeaver(classLoader);
weaver.addTransformer(new ClassFileTransformer() {
......@@ -56,21 +53,20 @@ public final class ReflectiveLoadTimeWeaverTests extends TestCase {
assertEquals(1, classLoader.getNumTimesGetThrowawayClassLoaderCalled());
}
public void testAddTransformerWithNullTransformer() throws Exception {
new AssertThrows(IllegalArgumentException.class) {
public void test() throws Exception {
new ReflectiveLoadTimeWeaver(new JustAddTransformerClassLoader()).addTransformer(null);
}
}.runTest();
@Test(expected=IllegalArgumentException.class)
public void testAddTransformerWithNullTransformer() {
new ReflectiveLoadTimeWeaver(new JustAddTransformerClassLoader()).addTransformer(null);
}
public void testGetThrowawayClassLoaderWithClassLoaderThatDoesNotExposeAGetThrowawayClassLoaderMethodYieldsFallbackClassLoader() throws Exception {
@Test
public void testGetThrowawayClassLoaderWithClassLoaderThatDoesNotExposeAGetThrowawayClassLoaderMethodYieldsFallbackClassLoader() {
ReflectiveLoadTimeWeaver weaver = new ReflectiveLoadTimeWeaver(new JustAddTransformerClassLoader());
ClassLoader throwawayClassLoader = weaver.getThrowawayClassLoader();
assertNotNull(throwawayClassLoader);
}
public void testGetThrowawayClassLoaderWithTotallyCompliantClassLoader() throws Exception {
@Test
public void testGetThrowawayClassLoaderWithTotallyCompliantClassLoader() {
TotallyCompliantClassLoader classLoader = new TotallyCompliantClassLoader();
ReflectiveLoadTimeWeaver weaver = new ReflectiveLoadTimeWeaver(classLoader);
ClassLoader throwawayClassLoader = weaver.getThrowawayClassLoader();
......
......@@ -16,16 +16,19 @@
package org.springframework.instrument.classloading;
import static org.junit.Assert.*;
import java.io.IOException;
import java.util.Enumeration;
import junit.framework.TestCase;
import org.junit.Test;
/**
* @author Rod Johnson
* @author Chris Beams
* @since 2.0
*/
public class ResourceOverridingShadowingClassLoaderTests extends TestCase {
public class ResourceOverridingShadowingClassLoaderTests {
private static final String EXISTING_RESOURCE = "org/springframework/instrument/classloading/testResource.xml";
......@@ -34,41 +37,47 @@ public class ResourceOverridingShadowingClassLoaderTests extends TestCase {
private ResourceOverridingShadowingClassLoader overridingLoader = new ResourceOverridingShadowingClassLoader(thisClassLoader);
@Test
public void testFindsExistingResourceWithGetResourceAndNoOverrides() {
assertNotNull(thisClassLoader.getResource(EXISTING_RESOURCE));
assertNotNull(overridingLoader.getResource(EXISTING_RESOURCE));
}
@Test
public void testDoesNotFindExistingResourceWithGetResourceAndNullOverride() {
assertNotNull(thisClassLoader.getResource(EXISTING_RESOURCE));
overridingLoader.override(EXISTING_RESOURCE, null);
assertNull(overridingLoader.getResource(EXISTING_RESOURCE));
}
@Test
public void testFindsExistingResourceWithGetResourceAsStreamAndNoOverrides() {
assertNotNull(thisClassLoader.getResourceAsStream(EXISTING_RESOURCE));
assertNotNull(overridingLoader.getResourceAsStream(EXISTING_RESOURCE));
}
@Test
public void testDoesNotFindExistingResourceWithGetResourceAsStreamAndNullOverride() {
assertNotNull(thisClassLoader.getResourceAsStream(EXISTING_RESOURCE));
overridingLoader.override(EXISTING_RESOURCE, null);
assertNull(overridingLoader.getResourceAsStream(EXISTING_RESOURCE));
}
@Test
public void testFindsExistingResourceWithGetResourcesAndNoOverrides() throws IOException {
assertNotNull(thisClassLoader.getResources(EXISTING_RESOURCE));
assertNotNull(overridingLoader.getResources(EXISTING_RESOURCE));
assertEquals(1, countElements(overridingLoader.getResources(EXISTING_RESOURCE)));
}
@Test
public void testDoesNotFindExistingResourceWithGetResourcesAndNullOverride() throws IOException {
assertNotNull(thisClassLoader.getResources(EXISTING_RESOURCE));
overridingLoader.override(EXISTING_RESOURCE, null);
assertEquals(0, countElements(overridingLoader.getResources(EXISTING_RESOURCE)));
}
private int countElements(Enumeration e) {
private int countElements(Enumeration<?> e) {
int elts = 0;
while (e.hasMoreElements()) {
e.nextElement();
......
......@@ -16,6 +16,8 @@
package org.springframework.instrument.classloading.glassfish;
import static org.junit.Assert.*;
import java.lang.instrument.ClassFileTransformer;
import java.net.URL;
import java.net.URLClassLoader;
......@@ -26,16 +28,20 @@ import java.util.List;
import javax.persistence.spi.ClassTransformer;
import com.sun.enterprise.loader.InstrumentableClassLoader;
import junit.framework.TestCase;
import org.easymock.ArgumentsMatcher;
import org.easymock.MockControl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.instrument.classloading.LoadTimeWeaver;
public class GlassFishLoadTimeWeaverTests extends TestCase {
import com.sun.enterprise.loader.InstrumentableClassLoader;
// converting away from old-style EasyMock APIs was problematic with this class
@SuppressWarnings("deprecation")
public class GlassFishLoadTimeWeaverTests {
private MockControl loaderCtrl;
private MockControl<InstrumentableClassLoader> loaderCtrl;
private InstrumentableClassLoader loader;
private LoadTimeWeaver ltw;
......@@ -60,9 +66,10 @@ public class GlassFishLoadTimeWeaverTests extends TestCase {
}
}
protected void setUp() throws Exception {
@Before
public void setUp() throws Exception {
loaderCtrl = MockControl.createControl(InstrumentableClassLoader.class);
loader = (InstrumentableClassLoader) loaderCtrl.getMock();
loader = loaderCtrl.getMock();
loaderCtrl.replay();
ltw = new GlassFishLoadTimeWeaver() {
......@@ -73,11 +80,13 @@ public class GlassFishLoadTimeWeaverTests extends TestCase {
};
}
protected void tearDown() throws Exception {
@After
public void tearDown() throws Exception {
loaderCtrl.verify();
ltw = null;
}
@Test
public void testGlassFishLoadTimeWeaver() {
try {
ltw = new GlassFishLoadTimeWeaver();
......@@ -89,6 +98,7 @@ public class GlassFishLoadTimeWeaverTests extends TestCase {
}
@Test
public void testGlassFishLoadTimeWeaverClassLoader() {
try {
ltw = new GlassFishLoadTimeWeaver(null);
......@@ -115,8 +125,9 @@ public class GlassFishLoadTimeWeaverTests extends TestCase {
assertSame(cl4, ltw.getInstrumentableClassLoader());
}
@Test
public void testAddTransformer() {
ClassFileTransformer transformer = (ClassFileTransformer) MockControl.createNiceControl(
ClassFileTransformer transformer = MockControl.createNiceControl(
ClassFileTransformer.class).getMock();
loaderCtrl.reset();
loader.addTransformer(new ClassTransformerAdapter(transformer));
......@@ -141,6 +152,7 @@ public class GlassFishLoadTimeWeaverTests extends TestCase {
ltw.addTransformer(transformer);
}
@Test
public void testGetThrowawayClassLoader() {
loaderCtrl.reset();
ClassLoader cl = new URLClassLoader(new URL[0]);
......
......@@ -16,50 +16,48 @@
package org.springframework.instrument.classloading.oc4j;
import junit.framework.TestCase;
import org.easymock.AbstractMatcher;
import org.easymock.MockControl;
import org.springframework.test.AssertThrows;
import static org.easymock.EasyMock.*;
import static org.easymock.EasyMock.createMock;
import static org.junit.Assert.assertNotNull;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
import org.easymock.AbstractMatcher;
import org.easymock.MockControl;
import org.junit.Test;
/**
* Unit tests for the {@link OC4JClassPreprocessorAdapter} class.
*
* @author Rick Evans
* @author Chris Beams
*/
public final class OC4JClassPreprocessorAdapterTests extends TestCase {
public final class OC4JClassPreprocessorAdapterTests {
public void testClassNameIsUnMangledPriorToTransformation() throws Exception {
@Test
public void testClassNameIsUnMangledPriorToTransformation() throws IllegalClassFormatException {
final byte[] classBytes = "CAFEBABE".getBytes();
final ClassLoader classLoader = getClass().getClassLoader();
MockControl mockTransformer = MockControl.createControl(ClassFileTransformer.class);
ClassFileTransformer transformer = (ClassFileTransformer) mockTransformer.getMock();
transformer.transform(classLoader, "com/foo/Bar", null, null, classBytes);
mockTransformer.setMatcher(new AbstractMatcher() {
public boolean matches(Object[] expected, Object[] actual) {
return expected[1].equals(actual[1]);
}
});
mockTransformer.setReturnValue(classBytes);
ClassFileTransformer transformer = createMock(ClassFileTransformer.class);
mockTransformer.replay();
expect(
transformer.transform(eq(classLoader), eq("com/foo/Bar"), (Class<?>)isNull(), (ProtectionDomain)isNull(), isA(byte[].class))
).andReturn(classBytes);
replay(transformer);
OC4JClassPreprocessorAdapter processor = new OC4JClassPreprocessorAdapter(transformer);
byte[] bytes = processor.processClass("com.foo.Bar", classBytes, 0, 0, null, classLoader);
assertNotNull(bytes);
mockTransformer.verify();
verify(transformer);
}
public void testCtorWithNullClassFileTransformer() throws Exception {
new AssertThrows(IllegalArgumentException.class) {
public void test() throws Exception {
new OC4JClassPreprocessorAdapter(null);
}
}.runTest();
@Test(expected=IllegalArgumentException.class)
public void testCtorWithNullClassFileTransformer() {
new OC4JClassPreprocessorAdapter(null);
}
}
......@@ -16,30 +16,24 @@
package org.springframework.instrument.classloading.oc4j;
import junit.framework.TestCase;
import org.springframework.test.AssertThrows;
import org.junit.Test;
/**
* Unit tests for the {@link OC4JLoadTimeWeaver} class.
*
* @author Rick Evans
* @author Chris Beams
*/
public final class OC4JLoadTimeWeaverTests extends TestCase {
public final class OC4JLoadTimeWeaverTests {
public void testCtorWithNullClassLoader() throws Exception {
new AssertThrows(IllegalArgumentException.class) {
public void test() throws Exception {
new OC4JLoadTimeWeaver(null);
}
}.runTest();
@Test(expected=IllegalArgumentException.class)
public void testCtorWithNullClassLoader() {
new OC4JLoadTimeWeaver(null);
}
public void testAddTransformerWithNullTransformer() throws Exception {
new AssertThrows(IllegalArgumentException.class) {
public void test() throws Exception {
@Test(expected=IllegalArgumentException.class)
public void testAddTransformerWithNullTransformer() {
new OC4JLoadTimeWeaver().addTransformer(null);
}
}.runTest();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册