⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractreflectionprovidertest.java

📁 xstream是一个把java object序列化成xml文件的开源库,轻便好用
💻 JAVA
字号:
package com.thoughtworks.xstream.converters.reflection;import org.jmock.Mock;import org.jmock.MockObjectTestCase;public abstract class AbstractReflectionProviderTest extends MockObjectTestCase {    protected ReflectionProvider reflectionProvider;    public abstract ReflectionProvider createReflectionProvider();    protected void setUp() throws Exception {        super.setUp();        reflectionProvider = createReflectionProvider();    }    public void testConstructsStandardClass() {        assertCanCreate(OuterClass.class);    }    public void testConstructsStaticInnerClass() {        assertCanCreate(PublicStaticInnerClass.class);    }    public static class WithFields {        private int a;        private int b = 2;        public int getParentB() {            return b;        }    }    public void testVisitsEachFieldInClass() {        // setup        Mock mockBlock = new Mock(ReflectionProvider.Visitor.class);        // expect        mockBlock.expect(once())                .method("visit")                .with(eq("a"), eq(int.class), eq(WithFields.class), ANYTHING);        mockBlock.expect(once())                .method("visit")                .with(eq("b"), eq(int.class), eq(WithFields.class), ANYTHING);        // execute        reflectionProvider.visitSerializableFields(new WithFields(), (ReflectionProvider.Visitor) mockBlock.proxy());        // verify        mockBlock.verify();    }    public static class SubClassWithFields extends WithFields {        private int c;    }    public void testVisitsEachFieldInHeirarchy() {        // setup        Mock mockBlock = new Mock(ReflectionProvider.Visitor.class);        // expect        mockBlock.expect(once())                .method("visit")                .with(eq("a"), eq(int.class), eq(WithFields.class), ANYTHING);        mockBlock.expect(once())                .method("visit")                .with(eq("b"), eq(int.class), eq(WithFields.class), ANYTHING);        mockBlock.expect(once())                .method("visit")                .with(eq("c"), eq(int.class), eq(SubClassWithFields.class), ANYTHING);        // execute        reflectionProvider.visitSerializableFields(new SubClassWithFields(), (ReflectionProvider.Visitor) mockBlock.proxy());        // verify        mockBlock.verify();    }    public static class SubClassWithHiddenFields extends WithFields {        private int b = 3;        public int getChildB() {            return b;        }    }    public void testVisitsFieldsHiddenBySubclass() {        // setup        Mock mockBlock = new Mock(ReflectionProvider.Visitor.class);        // expect        mockBlock.expect(once())                .method("visit")                .with(eq("b"), eq(int.class), eq(SubClassWithHiddenFields.class), ANYTHING)                .id("first");        mockBlock.expect(once())                .method("visit")                .with(eq("b"), eq(int.class), eq(WithFields.class), ANYTHING)                .after("first");        mockBlock.expect(once())                .method("visit")                .with(eq("a"), ANYTHING, ANYTHING, ANYTHING);        // execute        reflectionProvider.visitSerializableFields(new SubClassWithHiddenFields(), (ReflectionProvider.Visitor) mockBlock.proxy());        // verify        mockBlock.verify();    }    public void testWritesHiddenFields() {        SubClassWithHiddenFields o = new SubClassWithHiddenFields();        reflectionProvider.writeField(o, "b", new Integer(10), null);        reflectionProvider.writeField(o, "b", new Integer(20), WithFields.class);        assertEquals(10, o.getChildB());        assertEquals(20, o.getParentB());    }    protected void assertCanCreate(Class type) {        Object result = reflectionProvider.newInstance(type);        assertEquals(type, result.getClass());    }    protected void assertCannotCreate(Class type) {        try {            reflectionProvider.newInstance(type);            fail("Should not have been able to newInstance " + type);        } catch (ObjectAccessException goodException) {        }    }    public static class PublicStaticInnerClass {    }}class OuterClass {}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -