Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

MakeTestClass.java 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /*
  2. * Created on 02-Aug-2004
  3. *
  4. * TODO To change the template for this generated file go to
  5. * Window - Preferences - Java - Code Style - Code Templates
  6. */
  7. package org.aspectj.testing;
  8. import java.io.FileInputStream;
  9. import java.io.FileOutputStream;
  10. import java.io.InputStreamReader;
  11. import java.io.PrintStream;
  12. import java.text.NumberFormat;
  13. import java.util.ArrayList;
  14. import java.util.Iterator;
  15. import java.util.List;
  16. import org.apache.commons.digester.Digester;
  17. /**
  18. * @author colyer
  19. *
  20. * TODO To change the template for this generated type comment go to
  21. * Window - Preferences - Java - Code Style - Code Templates
  22. */
  23. public class MakeTestClass {
  24. private static final String HEADER =
  25. "/* *******************************************************************\n" +
  26. " * Copyright (c) 2004 IBM Corporation\n" +
  27. " * All rights reserved.\n" +
  28. " * This program and the accompanying materials are made available\n" +
  29. " * under the terms of the Eclipse Public License v1.0\n" +
  30. " * which accompanies this distribution and is available at\n" +
  31. " * http://www.eclipse.org/legal/epl-v10.html \n" +
  32. " * \n" +
  33. " * ******************************************************************/\n" +
  34. "package org.aspectj.systemtest.XXX;\n" +
  35. "\n" +
  36. "import java.io.File;\n" +
  37. "import junit.framework.Test;\n" +
  38. "import org.aspectj.testing.XMLBasedAjcTestCase;\n" +
  39. "\n" +
  40. "public class ";
  41. private static final String BODY_1 =
  42. " extends org.aspectj.testing.XMLBasedAjcTestCase {\n" +
  43. "\n" +
  44. " public static Test suite() {\n" +
  45. " return XMLBasedAjcTestCase.loadSuite(";
  46. private static final String BODY_2 =
  47. ".class);\n" +
  48. " }\n" +
  49. "\n" +
  50. " protected File getSpecFile() {\n" +
  51. " return new File(\"";
  52. private static final String BODY_3 =
  53. "\");\n" +
  54. " }\n";
  55. private static final String FOOTER =
  56. "}\n";
  57. private List tests = new ArrayList();
  58. private String className;
  59. private String suiteFile;
  60. public static void main(String[] args) throws Exception {
  61. new MakeTestClass(args[0],args[1]).makeTestClass();
  62. }
  63. public MakeTestClass(String className, String suiteFile)throws Exception {
  64. this.className = className;
  65. this.suiteFile = suiteFile;
  66. Digester d = getDigester();
  67. InputStreamReader isr = new InputStreamReader(new FileInputStream(suiteFile));
  68. d.parse(isr);
  69. }
  70. public void addTest(AjcTest test) {
  71. tests.add(test);
  72. }
  73. public void makeTestClass() throws Exception {
  74. FileOutputStream fos = new FileOutputStream(className + ".java");
  75. PrintStream out = new PrintStream(fos);
  76. out.print(HEADER);
  77. out.print(className);
  78. out.print(BODY_1);
  79. out.print(className);
  80. out.print(BODY_2);
  81. out.print(suiteFile);
  82. out.print(BODY_3);
  83. out.println();
  84. int testNo = 1;
  85. NumberFormat nf = NumberFormat.getInstance();
  86. nf.setMinimumIntegerDigits(3);
  87. for (Iterator iter = tests.iterator(); iter.hasNext();) {
  88. AjcTest test = (AjcTest) iter.next();
  89. out.println();
  90. out.print(" public void test");
  91. out.print(nf.format(testNo++));
  92. out.println("(){");
  93. out.println(" runTest(\"" + test.getTitle() + "\");");
  94. out.println(" }");
  95. }
  96. out.println();
  97. out.println(FOOTER);
  98. out.close();
  99. }
  100. private Digester getDigester() {
  101. Digester digester = new Digester();
  102. digester.push(this);
  103. digester.addObjectCreate("suite/ajc-test",AjcTest.class);
  104. digester.addSetProperties("suite/ajc-test");
  105. digester.addSetNext("suite/ajc-test","addTest","org.aspectj.testing.AjcTest");
  106. return digester;
  107. }
  108. }