Generate Test: using standard body templates + inserting necessary annotations overri...
authorAnton Makeev <Anton.Makeev@jetbrains.com>
Fri, 25 Jun 2010 11:07:30 +0000 (15:07 +0400)
committerAnton Makeev <Anton.Makeev@jetbrains.com>
Fri, 25 Jun 2010 11:34:40 +0000 (15:34 +0400)
25 files changed:
java/java-impl/src/com/intellij/codeInsight/generation/GenerateDelegateHandler.java
java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java
java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java
java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java
java/java-impl/src/com/intellij/testIntegration/BaseGenerateTestSupportMethodAction.java
java/java-impl/src/com/intellij/testIntegration/TestIntegrationUtils.java
java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestAction.java
plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.ft
plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html
plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.ft
plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html
plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.ft
plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html
plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.ft
plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html
plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.ft
plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html
plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.ft
plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html
plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.ft
plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html
plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.ft
plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html
plugins/testng/src/fileTemplates/code/TestNG Test Method.java.ft
plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html

index 7bc3cee907c8a12966c77c5b7f3ad8759f8e3062..741a9f0b7eb63091ed64d8b80c42f5ea28b7ff09 100644 (file)
@@ -17,7 +17,6 @@ package com.intellij.codeInsight.generation;
 
 import com.intellij.codeInsight.CodeInsightActionHandler;
 import com.intellij.codeInsight.CodeInsightBundle;
-import com.intellij.codeInsight.intention.AddAnnotationFix;
 import com.intellij.ide.util.MemberChooser;
 import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.diagnostic.Logger;
@@ -154,33 +153,19 @@ public class GenerateDelegateHandler implements CodeInsightActionHandler {
 
     final Project project = method.getProject();
     for (PsiAnnotation annotation : methodCandidate.getElement().getModifierList().getAnnotations()) {
-      annotate(method, project, annotation.getQualifiedName());
+      OverrideImplementUtil.annotate(method, annotation.getQualifiedName());
     }
 
     final PsiClass targetClass = ((PsiMember)target).getContainingClass();
     LOG.assertTrue(targetClass != null);
-    final PsiMethod[] methods = targetClass.findMethodsBySignature(method, true);
-    boolean insertOverride = false;
-    for (PsiMethod superMethod : methods) {
-      if (OverrideImplementUtil.isInsertOverride(superMethod, targetClass)) {
-        insertOverride = true;
-        break;
-      }
-    }
-    if (insertOverride) {
-      annotate(method, project, Override.class.getName());
+    PsiMethod overridden = targetClass.findMethodBySignature(method, true);
+    if (overridden != null) {
+      OverrideImplementUtil.annotateOnOverrideImplement(method, targetClass, overridden);
     }
 
     return new PsiGenerationInfo<PsiMethod>(method);
   }
 
-  private static void annotate(PsiMethod method, Project project, final String qualifiedName) {
-    final AddAnnotationFix fix = new AddAnnotationFix(qualifiedName, method);
-    if (fix.isAvailable(project, null, method.getContainingFile())) {
-      fix.invoke(project, null, method.getContainingFile());
-    }
-  }
-
   private static void clearMethod(PsiMethod method) throws IncorrectOperationException {
     LOG.assertTrue(!method.isPhysical());
     PsiCodeBlock codeBlock = JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createCodeBlock();
index 90ef1b1ff0dfb0bc0cb456e64e4ef2ff3e7451c5..dd5d4493bf95cf1b08f932eee2014032399ad2d3 100644 (file)
@@ -132,7 +132,7 @@ public class GenerateEqualsHelper implements Runnable {
         if (!mySuperHasHashCode) {
           @NonNls String text = "";
           CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myProject);
-          if (styleSettings.INSERT_OVERRIDE_ANNOTATION && PsiUtil.isLanguageLevel5OrHigher(myClass)) {
+          if (GenerateMembersUtil.shouldAddOverrideAnnotation(myClass, false)) {
             text += "@Override\n";
           }
 
@@ -170,7 +170,7 @@ public class GenerateEqualsHelper implements Runnable {
 
     @NonNls StringBuffer buffer = new StringBuffer();
     CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myProject);
-    if (styleSettings.INSERT_OVERRIDE_ANNOTATION && PsiUtil.isLanguageLevel5OrHigher(myClass)) {
+    if (GenerateMembersUtil.shouldAddOverrideAnnotation(myClass, false)) {
       buffer.append("@Override\n");
     }
     buffer.append("public boolean equals(Object ").append(myParameterName).append(") {\n");
@@ -326,7 +326,7 @@ public class GenerateEqualsHelper implements Runnable {
     @NonNls StringBuilder buffer = new StringBuilder();
 
     CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(myProject);
-    if (styleSettings.INSERT_OVERRIDE_ANNOTATION && PsiUtil.isLanguageLevel5OrHigher(myClass)) {
+    if (GenerateMembersUtil.shouldAddOverrideAnnotation(myClass, false)) {
       buffer.append("@Override\n");
     }
     buffer.append("public int hashCode() {\n");
index 7d1a0dcf595316dcf585e5f8d6d609c481da52a2..b96cc1d48c56953b2be6c00843c8e9e5bf69217e 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.intellij.codeInsight.generation;
 
+import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils;
 import com.intellij.lang.ASTNode;
 import com.intellij.lang.StdLanguages;
 import com.intellij.openapi.diagnostic.Logger;
@@ -23,14 +24,15 @@ import com.intellij.openapi.editor.ScrollType;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.Pair;
 import com.intellij.psi.*;
+import com.intellij.psi.codeStyle.CodeStyleSettings;
 import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
 import com.intellij.psi.codeStyle.JavaCodeStyleManager;
 import com.intellij.psi.codeStyle.VariableKind;
 import com.intellij.psi.javadoc.PsiDocComment;
 import com.intellij.psi.util.PsiUtil;
 import com.intellij.psi.util.TypeConversionUtil;
-import com.intellij.util.VisibilityUtil;
 import com.intellij.util.IncorrectOperationException;
+import com.intellij.util.VisibilityUtil;
 import com.intellij.util.containers.HashMap;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
@@ -303,4 +305,25 @@ public class GenerateMembersUtil {
       if (child == null) return false;
     }
   }
+
+  public static boolean shouldAddOverrideAnnotation(PsiElement context, boolean interfaceMethod) {
+    CodeStyleSettings style = CodeStyleSettingsManager.getSettings(context.getProject());
+    if (!style.INSERT_OVERRIDE_ANNOTATION) return false;
+    
+    if (interfaceMethod) return PsiUtil.isLanguageLevel6OrHigher(context);
+    return PsiUtil.isLanguageLevel5OrHigher(context);
+  }
+
+  public static void setupGeneratedMethod(PsiMethod method) {
+    PsiClass base = method.getContainingClass().getSuperClass();
+    PsiMethod overridden = base == null ? null : base.findMethodBySignature(method, true);
+
+    if (overridden == null) {
+      CreateFromUsageUtils.setupMethodBody(method, method.getContainingClass());
+      return;
+    }
+
+    OverrideImplementUtil.setupMethodBody(method, overridden, method.getContainingClass());
+    OverrideImplementUtil.annotateOnOverrideImplement(method, base, overridden);
+  }
 }
index 0ea1afe28510262a969e6279e1dd62af9e851e4b..46d63d90538de7cafb7fe2b2d6c7e31c889c31c4 100644 (file)
@@ -228,7 +228,8 @@ public class OverrideImplementUtil {
   }
 
   public static boolean isInsertOverride(PsiMethod superMethod, PsiClass targetClass) {
-    if (!CodeStyleSettingsManager.getSettings(targetClass.getProject()).INSERT_OVERRIDE_ANNOTATION || !PsiUtil.isLanguageLevel5OrHigher(targetClass)) {
+    if (!CodeStyleSettingsManager.getSettings(targetClass.getProject()).INSERT_OVERRIDE_ANNOTATION
+        || !PsiUtil.isLanguageLevel5OrHigher(targetClass)) {
       return false;
     }
     if (PsiUtil.isLanguageLevel6OrHigher(targetClass)) return true;
@@ -242,7 +243,7 @@ public class OverrideImplementUtil {
                                                        PsiMethod method,
                                                        PsiSubstitutor substitutor,
                                                        boolean toCopyJavaDoc,
-                                                       boolean insertAtOverrideIfPossible) throws IncorrectOperationException {
+                                                       boolean insertOverrideIfPossible) throws IncorrectOperationException {
     if (!method.isValid() || !substitutor.isValid()) return Collections.emptyList();
 
     List<PsiMethod> results = new ArrayList<PsiMethod>();
@@ -280,19 +281,8 @@ public class OverrideImplementUtil {
         }
       }
 
-      if (insertAtOverrideIfPossible && isInsertOverride(method, aClass) && !method.isConstructor()) {
-        annotate(result, "java.lang.Override");
-      }
-
-      for (OverrideImplementsAnnotationsHandler annotationsHandler : Extensions
-        .getExtensions(OverrideImplementsAnnotationsHandler.EP_NAME)) {
-        for (String annotationFQName : annotationsHandler.getAnnotations()) {
-          if (AnnotationUtil.isAnnotated(method, annotationFQName, false)) {
-            annotate(result, annotationFQName, annotationsHandler.annotationsToRemove(annotationFQName));
-          }
-        }
-      }
-
+      annotateOnOverrideImplement(result, aClass, method, insertOverrideIfPossible);
+      
       final PsiCodeBlock body = JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createCodeBlockFromText("{}", null);
       PsiCodeBlock oldbody = result.getBody();
       if (oldbody != null){
@@ -322,7 +312,25 @@ public class OverrideImplementUtil {
     return results;
   }
 
-  private static void annotate(final PsiMethod result, String fqn, String... annosToRemove) throws IncorrectOperationException {
+  public static void annotateOnOverrideImplement(PsiMethod method, PsiClass targetClass, PsiMethod overridden) {
+    annotateOnOverrideImplement(method, targetClass, overridden,
+                                CodeStyleSettingsManager.getSettings(method.getProject()).INSERT_OVERRIDE_ANNOTATION);
+  }
+
+  public static void annotateOnOverrideImplement(PsiMethod method, PsiClass targetClass, PsiMethod overridden, boolean insertOverride) {
+    if (insertOverride && !overridden.isConstructor() && isInsertOverride(overridden, targetClass)) {
+      annotate(method, Override.class.getName());
+    }
+    for (OverrideImplementsAnnotationsHandler each : Extensions.getExtensions(OverrideImplementsAnnotationsHandler.EP_NAME)) {
+      for (String annotation : each.getAnnotations()) {
+        if (AnnotationUtil.isAnnotated(overridden, annotation, false)) {
+          annotate(method, annotation, each.annotationsToRemove(annotation));
+        }
+      }
+    }
+  }
+
+  public static void annotate(PsiMethod result, String fqn, String... annosToRemove) throws IncorrectOperationException {
     Project project = result.getProject();
     AddAnnotationFix fix = new AddAnnotationFix(fqn, result, annosToRemove);
     if (fix.isAvailable(project, null, result.getContainingFile())) {
@@ -374,7 +382,7 @@ public class OverrideImplementUtil {
   }
 
   @NotNull
-  private static String callSuper (PsiMethod superMethod, PsiMethod overriding) {
+  public static String callSuper (PsiMethod superMethod, PsiMethod overriding) {
     @NonNls StringBuilder buffer = new StringBuilder();
     if (!superMethod.isConstructor() && superMethod.getReturnType() != PsiType.VOID) {
       buffer.append("return ");
index 123b2fcfc234c0f19fba293f6ffc8e0836785924..a234a4ee73018edb69ec6d273de8382b36e94440 100644 (file)
@@ -105,44 +105,45 @@ public class BaseGenerateTestSupportMethodAction extends BaseGenerateAction {
 
       if (frameworks.size() == 1) {
         doGenerate(editor, file, targetClass, frameworks.get(0));
-      } else {
-        final JList list = new JList(frameworks.toArray(new TestFramework[frameworks.size()]));
-        list.setCellRenderer(new DefaultListCellRenderer() {
-          @Override
-          public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
-            Component result = super.getListCellRendererComponent(list, "", index, isSelected, cellHasFocus);
-            if (value == null) return result;
-            TestFramework framework = (TestFramework)value;
-
-            setIcon(framework.getIcon());
-            setText(framework.getName());
-            
-            return result;
-          }
-        });
+        return;
+      }
 
-        final Runnable runnable = new Runnable() {
-          public void run() {
-            TestFramework selected = (TestFramework)list.getSelectedValue();
-            if (selected == null) return;
-            doGenerate(editor, file, targetClass, selected);
-          }
-        };
+      final JList list = new JList(frameworks.toArray(new TestFramework[frameworks.size()]));
+      list.setCellRenderer(new DefaultListCellRenderer() {
+        @Override
+        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+          Component result = super.getListCellRendererComponent(list, "", index, isSelected, cellHasFocus);
+          if (value == null) return result;
+          TestFramework framework = (TestFramework)value;
 
-        PopupChooserBuilder builder = new PopupChooserBuilder(list);
-        builder.setFilteringEnabled(new Function<Object, String>() {
-          @Override
-          public String fun(Object o) {
-            return ((TestFramework)o).getName();
-          }
-        });
+          setIcon(framework.getIcon());
+          setText(framework.getName());
 
-        builder
-          .setTitle("Choose Framework")
-          .setItemChoosenCallback(runnable)
-          .setMovable(true)
-          .createPopup().showInBestPositionFor(editor);
-      }
+          return result;
+        }
+      });
+
+      final Runnable runnable = new Runnable() {
+        public void run() {
+          TestFramework selected = (TestFramework)list.getSelectedValue();
+          if (selected == null) return;
+          doGenerate(editor, file, targetClass, selected);
+        }
+      };
+
+      PopupChooserBuilder builder = new PopupChooserBuilder(list);
+      builder.setFilteringEnabled(new Function<Object, String>() {
+        @Override
+        public String fun(Object o) {
+          return ((TestFramework)o).getName();
+        }
+      });
+
+      builder
+        .setTitle("Choose Framework")
+        .setItemChoosenCallback(runnable)
+        .setMovable(true)
+        .createPopup().showInBestPositionFor(editor);
     }
 
     private void doGenerate(final Editor editor, final PsiFile file, final PsiClass targetClass, final TestFramework framework) {
index e2bf9db8b59207d026124e5be7e9a5a7a1dbfa17..2f71133cf66de27bd4beeb423998f7180749a4bb 100644 (file)
@@ -17,6 +17,7 @@ package com.intellij.testIntegration;
 
 import com.intellij.codeInsight.TestUtil;
 import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils;
+import com.intellij.codeInsight.generation.GenerateMembersUtil;
 import com.intellij.codeInsight.template.Expression;
 import com.intellij.codeInsight.template.Template;
 import com.intellij.codeInsight.template.TemplateEditingAdapter;
@@ -32,10 +33,9 @@ import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.TextRange;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
-import com.intellij.psi.codeStyle.JavaCodeStyleManager;
 import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.refactoring.util.classMembers.MemberInfo;
-import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.Nullable;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -46,18 +46,30 @@ public class TestIntegrationUtils {
   private static final Logger LOG = Logger.getInstance("#" + TestIntegrationUtils.class.getName());
 
   public enum MethodKind {
-    SET_UP {
+    SET_UP("setUp") {
       public FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework) {
         return framework.getSetUpMethodFileTemplateDescriptor();
-      }},
-    TEAR_DOWN {
+      }
+    },
+    TEAR_DOWN("tearDown") {
       public FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework) {
         return framework.getTearDownMethodFileTemplateDescriptor();
-      }},
-    TEST {
+      }
+    },
+    TEST("test") {
       public FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework) {
         return framework.getTestMethodFileTemplateDescriptor();
-      }};
+      }
+    };
+    private String myDefaultName;
+
+    MethodKind(String defaultName) {
+      myDefaultName = defaultName;
+    }
+
+    public String getDefaultName() {
+      return myDefaultName;
+    }
 
     public abstract FileTemplateDescriptor getFileTemplateDescriptor(TestFramework framework);
   }
@@ -99,39 +111,14 @@ public class TestIntegrationUtils {
     return result;
   }
 
-  public static PsiMethod createMethod(PsiClass targetClass, String name, String annotation) throws IncorrectOperationException {
-    PsiElementFactory f = JavaPsiFacade.getInstance(targetClass.getProject()).getElementFactory();
-    PsiMethod result = f.createMethod(name, PsiType.VOID);
-    result.getBody().add(f.createCommentFromText("// Add your code here", result));
-
-    if (annotation != null) {
-      PsiAnnotation a = f.createAnnotationFromText("@" + annotation, result);
-      PsiModifierList modifiers = result.getModifierList();
-      PsiElement first = modifiers.getFirstChild();
-      if (first == null) {
-        modifiers.add(a);
-      }
-      else {
-        modifiers.addBefore(a, first);
-      }
-
-      JavaCodeStyleManager.getInstance(targetClass.getProject()).shortenClassReferences(modifiers);
-    }
-
-    return result;
-  }
-
   public static void runTestMethodTemplate(MethodKind methodKind,
                                            TestFramework framework,
                                            final Editor editor,
-                                           PsiClass targetClass,
+                                           final PsiClass targetClass,
                                            final PsiMethod method,
-                                           String name,
+                                           @Nullable String name,
                                            boolean automatic) {
     Template template = createTestMethodTemplate(methodKind, framework, targetClass, name, automatic);
-    template.setToIndent(true);
-    template.setToReformat(true);
-    template.setToShortenLongNames(true);
 
     final TextRange range = method.getTextRange();
     editor.getDocument().replaceString(range.getStartOffset(), range.getEndOffset(), "");
@@ -149,12 +136,13 @@ public class TestIntegrationUtils {
             public void run() {
               PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument());
               PsiFile psi = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
-              PsiElement method = psi.findElementAt(range.getStartOffset());
+              PsiElement el = PsiTreeUtil.findElementOfClassAtOffset(psi, editor.getCaretModel().getOffset() - 1, PsiMethod.class, false);
 
-              if (method != null) {
-                method = PsiTreeUtil.getParentOfType(method, PsiMethod.class, false);
+              if (el != null) {
+                PsiMethod method = PsiTreeUtil.getParentOfType(el, PsiMethod.class, false);
                 if (method != null) {
-                  CreateFromUsageUtils.setupEditor((PsiMethod)method, editor);
+                  GenerateMembersUtil.setupGeneratedMethod(method);
+                  CreateFromUsageUtils.setupEditor(method, editor);
                 }
               }
             }
@@ -170,7 +158,7 @@ public class TestIntegrationUtils {
   private static Template createTestMethodTemplate(MethodKind methodKind,
                                                    TestFramework descriptor,
                                                    PsiClass targetClass,
-                                                   String name,
+                                                   @Nullable String name,
                                                    boolean automatic) {
     FileTemplateDescriptor templateDesc = methodKind.getFileTemplateDescriptor(descriptor);
     String templateName = templateDesc.getFileName();
@@ -186,8 +174,10 @@ public class TestIntegrationUtils {
       templateText = fileTemplate.getText();
     }
 
+    if (name == null) name = methodKind.getDefaultName();
+
     int from = 0;
-    while(true) {
+    while (true) {
       int index = templateText.indexOf("${NAME}", from);
       if (index == -1) break;
 
@@ -202,7 +192,8 @@ public class TestIntegrationUtils {
       if (from == 0) {
         Expression nameExpr = new ConstantNode(name);
         template.addVariable("name", nameExpr, nameExpr, !automatic);
-      } else {
+      }
+      else {
         template.addVariableSegment("name");
       }
 
@@ -210,6 +201,10 @@ public class TestIntegrationUtils {
     }
     template.addTextSegment(templateText.substring(from, templateText.length()));
 
+    template.setToIndent(true);
+    template.setToReformat(true);
+    template.setToShortenLongNames(true);
+
     return template;
   }
 
index c7fee6885760df02974a95012db2cb3c3625f5ff..1bc5587171626fc2f16532373853c672133c112b 100644 (file)
@@ -182,10 +182,10 @@ public class CreateTestAction extends PsiElementBaseIntentionAction {
                               boolean generateBefore,
                               boolean generateAfter) throws IncorrectOperationException {
     if (generateBefore) {
-      generateMethod(TestIntegrationUtils.MethodKind.SET_UP, descriptor, targetClass, editor, "setUp");
+      generateMethod(TestIntegrationUtils.MethodKind.SET_UP, descriptor, targetClass, editor, null);
     }
     if (generateAfter) {
-      generateMethod(TestIntegrationUtils.MethodKind.TEAR_DOWN, descriptor, targetClass, editor, "tearDown");
+      generateMethod(TestIntegrationUtils.MethodKind.TEAR_DOWN, descriptor, targetClass, editor, null);
     }
     for (MemberInfo m : methods) {
       generateMethod(TestIntegrationUtils.MethodKind.TEST, descriptor, targetClass, editor, m.getMember().getName());
index d7b080ba31ddf706d07fccb63ef7f2866ceb401a..a48babc3e1de7403ed01f61d637d5eb2e4e3fa0f 100644 (file)
@@ -1,3 +1,3 @@
 public void setUp() throws Exception {
-    super.setUp();
+  ${BODY}
 }
\ No newline at end of file
index 5dd853aa58f577e01295cee2c38a46a0b9e8d6ea..202ceb7ce4fab8b998c35b4e3a40f398a843f078 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a setUp method in a JUnit 3 test class.
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
 </body>
 </html>
\ No newline at end of file
index 71729a5c04424619d4e6b8136e23dc704538dd38..d9b5079004cd6051335bcf4d2fe7441dc4fa8d2d 100644 (file)
@@ -1,3 +1,3 @@
 public void tearDown() throws Exception {
-    super.tearDown();
+  ${BODY}
 }
\ No newline at end of file
index d73d24c31fc3d49b3c18797cfa967b180f246c96..8b6fda6a1b287373d2899335741516ad7c7aacc6 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a tearDown method in a JUnit 3 test class.
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
 </body>
 </html>
\ No newline at end of file
index 2dd05ccdfea9a4866f430f1e9d62ae1e1c5755f3..bc74d0ce2fa4828194edd74bf20ce1eab0d09b95 100644 (file)
@@ -1,2 +1,3 @@
 public void test${NAME}() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 40aa0e7119454ec7702485a7c061704bc946b43b..ebb0a9729291fded83b6ba0cffc0afe88b581ad7 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a test method in a JUnit 3 test class.
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
 </body>
 </html>
\ No newline at end of file
index b821af18acf043d09f44508b03ea045a6f5e2444..167b9bb8f2ed110ce5828660e5254f913a234e03 100644 (file)
@@ -1,3 +1,4 @@
 @org.junit.Before
 public void setUp() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 9a900d38a1ec6819739124ebe99513911a538ac0..cbd1a2b09374ece89970f878b16d77a30849e06c 100644 (file)
@@ -1,13 +1,12 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a setUp method in a JUnit 4 test class.</font>
     </td>
   </tr>
 </table>
-</body>
 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">Predefined variables will take the following values:</font></td>
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
+</body>
 </html>
\ No newline at end of file
index 4386d8d40146c69724b2f4ffb85c8c4e2281c469..0b032f7d0fbaf6d653cc7db1302a31ff72f3337c 100644 (file)
@@ -1,3 +1,4 @@
 @org.junit.After
 public void tearDown() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 0dc95f0033560b6b2a63776480c725620ef011ff..6537c778e306cab1cb135d12a48ee49aa5936608 100644 (file)
@@ -1,13 +1,12 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a tearDown method in a JUnit 4 test class.</font>
     </td>
   </tr>
 </table>
-</body>
 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">Predefined variables will take the following values:</font></td>
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
+</body>
 </html>
\ No newline at end of file
index d39a85ec6810548e33210495cb67d5758e69a119..f104337995b7d694c0f8b543baa53fd080da681e 100644 (file)
@@ -1,3 +1,4 @@
 @org.junit.Test
 public void test${NAME}() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 2f24b018c8d827173f2009c14b7a761f481e9cca..26abb265e538ce88045c2ec4b3be427137c48410 100644 (file)
@@ -1,13 +1,12 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a test method in a JUnit 4 test class.</font>
     </td>
   </tr>
 </table>
-</body>
 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">Predefined variables will take the following values:</font></td>
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
+</body>
 </html>
\ No newline at end of file
index 6362911c47c9588828c845bd9bb978e0da12c116..895b538799327dbe3ee1e65fe78914c634ca2df8 100644 (file)
@@ -1,3 +1,4 @@
 @org.testng.annotations.BeforeMethod
-public void setUp() {
+public void setUp() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 16d47d6e27969ac57b4b9bc5d86b18e4ed9615b1..34d676ffb256700a8eae92a4891005bc84171945 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a setUp method in a TestNG test class.</font>
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
 </body>
 </html>
\ No newline at end of file
index b25acdba52b02dd6a10fcfa576f74bcf6c0016b3..e97d85c5e27bdf430a31e74c0b48b8591fecec8b 100644 (file)
@@ -1,3 +1,4 @@
 @org.testng.annotations.AfterMethod
-public void tearDown() {
+public void tearDown() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 9da27c8a9d01e745c405a67282c35980f29020eb..df1e2b19bf943efec836074867c58cd4e3891924 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a tearDown method in a TestNG test class.</font>
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
 </body>
 </html>
\ No newline at end of file
index 13bc8a6008353eeb7c9b8d2c21aefa30f67ceebd..3129d9669e22a678cee65355c20b1a9c180981ce 100644 (file)
@@ -1,3 +1,4 @@
 @org.testng.annotations.Test
 public void test${NAME}() throws Exception {
+  ${BODY}
 }
\ No newline at end of file
index 1486a296e4f9519d6a541be6eb2ef7e428cbb83b..84a8bd54328f15c0e92d005634177a99ead67d17 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
+<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
   <tr>
     <td colspan="3"><font face="verdana" size="-1">
       This is a template used by <b>IDEA</b> to create a test method in a TestNG test class.</font>
     <td width="10">&nbsp;</td>
     <td valign="top"><font face="verdana" size="-1">name of the created method.</font></td>
   </tr>
+  <tr>
+    <td valign="top"><nobr><font face="verdana" size="-2" color="#7F0000"><b><i>${BODY}</i></b></font></nobr></td>
+    <td width="10">&nbsp;</td>
+    <td valign="top"><font face="verdana" size="-1">generated method body.</font></td>
+  </tr>
 </table>
 </body>
 </html>
\ No newline at end of file