package org.test4j.json.encoder.object; import java.lang.reflect.Method; import org.junit.Test; import org.test4j.json.JSON; import org.test4j.json.encoder.EncoderTest; import org.test4j.json.encoder.object.spec.MethodEncoder; import org.test4j.json.helper.JSONFeature; public class MethodEncoderTest extends EncoderTest { @Test public void testEncodeSingleValue() throws Exception { Method m = MethodJsonDemo.class.getDeclaredMethod("demo2Para", String.class, Integer.class); want.object(m).notNull(); MethodEncoder encoder = MethodEncoder.instance; this.setUnmarkFeature(encoder); encoder.encode(m, writer, references); String json = writer.toString(); want.string(json) .isEqualTo( "{methodName:'demo2Para',declaredBy:'org.test4j.json.encoder.object.MethodJsonDemo',paraType:['java.lang.String','java.lang.Integer']}"); } @Test public void testEncodeMethod() { MethodJsonDemo target = new MethodJsonDemo(); String json = JSON.toJSON(target, JSONFeature.UnMarkClassFlag, JSONFeature.UseSingleQuote, JSONFeature.SkipNullValue); want.string(json) .isEqualTo( "{method:{methodName:'demo2Para',declaredBy:'org.test4j.json.encoder.object.MethodJsonDemo',paraType:['java.lang.String','java.lang.Integer']},name:'MethodJsonDemo'}"); } } @SuppressWarnings("unused") class MethodJsonDemo { private Method method; private final String name = "MethodJsonDemo"; public MethodJsonDemo() { try { this.method = MethodJsonDemo.class.getDeclaredMethod("demo2Para", String.class, Integer.class); } catch (Exception e) { throw new RuntimeException(e); } } public void demo2Para(String para1, Integer v1) { } }