From c10079bff0807b7e21f45d820a75f06aa171ff8d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 10 Mar 2016 18:21:07 +0100 Subject: [PATCH] generate tests: order methods by methods order in the source class (IDEA-152829) --- .../createTest/JavaTestGenerator.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/testIntegration/createTest/JavaTestGenerator.java b/java/java-impl/src/com/intellij/testIntegration/createTest/JavaTestGenerator.java index 87037f5b566d..66ee2a6b6cf1 100644 --- a/java/java-impl/src/com/intellij/testIntegration/createTest/JavaTestGenerator.java +++ b/java/java-impl/src/com/intellij/testIntegration/createTest/JavaTestGenerator.java @@ -189,11 +189,13 @@ public class JavaTestGenerator implements TestGenerator { boolean generateBefore, boolean generateAfter) throws IncorrectOperationException { final Set existingNames = new HashSet(); + PsiMethod anchor = null; if (generateBefore && descriptor.findSetUpMethod(targetClass) == null) { - generateMethod(TestIntegrationUtils.MethodKind.SET_UP, descriptor, targetClass, sourceClass, editor, null, existingNames); + anchor = generateMethod(TestIntegrationUtils.MethodKind.SET_UP, descriptor, targetClass, sourceClass, editor, null, existingNames, null); } + if (generateAfter && descriptor.findTearDownMethod(targetClass) == null) { - generateMethod(TestIntegrationUtils.MethodKind.TEAR_DOWN, descriptor, targetClass, sourceClass, editor, null, existingNames); + anchor = generateMethod(TestIntegrationUtils.MethodKind.TEAR_DOWN, descriptor, targetClass, sourceClass, editor, null, existingNames, anchor); } final Template template = TestIntegrationUtils.createTestMethodTemplate(TestIntegrationUtils.MethodKind.TEST, descriptor, @@ -207,7 +209,7 @@ public class JavaTestGenerator implements TestGenerator { })); for (MemberInfo m : methods) { - generateMethod(TestIntegrationUtils.MethodKind.TEST, descriptor, targetClass, sourceClass, editor, m.getMember().getName(), existingNames); + anchor = generateMethod(TestIntegrationUtils.MethodKind.TEST, descriptor, targetClass, sourceClass, editor, m.getMember().getName(), existingNames, anchor); } } @@ -221,16 +223,17 @@ public class JavaTestGenerator implements TestGenerator { }); } - private static void generateMethod(TestIntegrationUtils.MethodKind methodKind, - TestFramework descriptor, - PsiClass targetClass, - @Nullable PsiClass sourceClass, - Editor editor, - @Nullable String name, - Set existingNames) { - PsiMethod method = (PsiMethod)targetClass.add(TestIntegrationUtils.createDummyMethod(targetClass)); + private static PsiMethod generateMethod(TestIntegrationUtils.MethodKind methodKind, + TestFramework descriptor, + PsiClass targetClass, + @Nullable PsiClass sourceClass, + Editor editor, + @Nullable String name, + Set existingNames, PsiMethod anchor) { + PsiMethod method = (PsiMethod)targetClass.addAfter(TestIntegrationUtils.createDummyMethod(targetClass), anchor); PsiDocumentManager.getInstance(targetClass.getProject()).doPostponedOperationsAndUnblockDocument(editor.getDocument()); TestIntegrationUtils.runTestMethodTemplate(methodKind, descriptor, editor, targetClass, sourceClass, method, name, true, existingNames); + return method; } @Override