QueryServiceSMOImplTest.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.java110.service.smo.impl;
  2. import javassist.CannotCompileException;
  3. import javassist.ClassClassPath;
  4. import javassist.ClassPool;
  5. import javassist.CtClass;
  6. import javassist.CtMethod;
  7. import javassist.CtNewMethod;
  8. import junit.framework.TestCase;
  9. import java.lang.reflect.Constructor;
  10. import java.lang.reflect.InvocationTargetException;
  11. import java.lang.reflect.Method;
  12. public class QueryServiceSMOImplTest extends TestCase {
  13. public void testJava() throws CannotCompileException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
  14. String javaCode = "public static void testJava2() { System.out.println(\"123213\");\n}\n";
  15. String javaCode2 ="public static void testJava1() { testJava2(); System.out.println(\"223213\");\n}";
  16. ClassPool classPool = ClassPool.getDefault();
  17. CtClass ctClass = classPool.makeClass("com.java110.service.smo.WuxwTest");
  18. CtMethod helloM = CtNewMethod.make(javaCode, ctClass);
  19. ctClass.addMethod(helloM);
  20. CtMethod helloM1 = CtNewMethod.make(javaCode2, ctClass);
  21. ctClass.addMethod(helloM1);
  22. Class pc=ctClass.toClass();
  23. Method move= pc.getMethod("testJava1",new Class[]{});
  24. Constructor<?> con=pc.getConstructor(new Class[]{});
  25. move.invoke(con);
  26. }
  27. public void testExistsJavaClass() throws Exception{
  28. ClassPool classPool = ClassPool.getDefault();
  29. CtClass ctClass = classPool.get("com.java110.core.javassist.Java110CoreTemplateJavassist");
  30. String javaCode = "public static void testJava2() { System.out.println(\"123213\");\n}\n";
  31. String javaCode2 ="public static void testJava1() { testJava2(); System.out.println(\"223213\");\n}";
  32. CtMethod helloM = CtNewMethod.make(javaCode, ctClass);
  33. ctClass.addMethod(helloM);
  34. CtMethod helloM1 = CtNewMethod.make(javaCode2, ctClass);
  35. ctClass.addMethod(helloM1);
  36. //ctClass
  37. ctClass.writeFile("E:\\project\\HC\\MicroCommunity\\11");
  38. }
  39. }