diff options
| author | Noopur Gupta | 2017-11-24 10:29:33 +0000 |
|---|---|---|
| committer | Noopur Gupta | 2017-11-24 10:29:33 +0000 |
| commit | 7f92660f683f5cba60c72fea7082acbc3a9eafbf (patch) | |
| tree | 335670e8d0a9944dd800c4468b7a85549f2aa175 | |
| parent | a44c458467db52c855bf94f3de0e51b663ec90d7 (diff) | |
| download | eclipse.jdt.ui-7f92660f683f5cba60c72fea7082acbc3a9eafbf.tar.gz eclipse.jdt.ui-7f92660f683f5cba60c72fea7082acbc3a9eafbf.tar.xz eclipse.jdt.ui-7f92660f683f5cba60c72fea7082acbc3a9eafbf.zip | |
Bug 527411: [JUnit 5] JUnit5 support not properly working for
PluginUnitTests
Change-Id: If7da95aed16d90f6932639aaf47bf606081f470e
4 files changed, 37 insertions, 16 deletions
diff --git a/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java b/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java index 05085faaed..ad8bc7deb6 100644 --- a/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java +++ b/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java @@ -133,8 +133,6 @@ public class RemoteTestRunner implements MessageSender, IVisitsTestTrees { private boolean fConsoleMode = false; - public static final RemoteTestRunner fgTestRunServer= new RemoteTestRunner(); - /** * Reader thread that processes messages from the client. */ @@ -203,8 +201,9 @@ public class RemoteTestRunner implements MessageSender, IVisitsTestTrees { */ public static void main(String[] args) { try { - fgTestRunServer.init(args); - fgTestRunServer.run(); + RemoteTestRunner testRunServer= new RemoteTestRunner(); + testRunServer.init(args); + testRunServer.run(); } catch (Throwable e) { e.printStackTrace(); // don't allow System.exit(0) to swallow exceptions } finally { diff --git a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java index 3b27eb0cba..386a0c5a52 100644 --- a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java +++ b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java @@ -30,16 +30,20 @@ import org.eclipse.jdt.internal.junit.runner.IListensToTestExecutions; import org.eclipse.jdt.internal.junit.runner.ITestIdentifier; import org.eclipse.jdt.internal.junit.runner.MessageIds; import org.eclipse.jdt.internal.junit.runner.RemoteTestRunner; +import org.eclipse.jdt.internal.junit.runner.TestIdMap; import org.eclipse.jdt.internal.junit.runner.TestReferenceFailure; public class JUnit5TestListener implements TestExecutionListener { private final IListensToTestExecutions fNotified; + private RemoteTestRunner fRemoteTestRunner; + private TestPlan fTestPlan; - public JUnit5TestListener(IListensToTestExecutions notified) { + public JUnit5TestListener(IListensToTestExecutions notified, RemoteTestRunner remoteTestRunner) { fNotified= notified; + fRemoteTestRunner= remoteTestRunner; } @Override @@ -165,11 +169,22 @@ public class JUnit5TestListener implements TestExecutionListener { hasChildren= false; testCount= 1; } - String parentId= JUnit5TestReference.getParentId(testIdentifier, fTestPlan); - RemoteTestRunner.fgTestRunServer.visitTreeEntry(dynamicTestIdentifier, hasChildren, testCount, true, parentId); + String parentId= getParentId(testIdentifier, fTestPlan); + fRemoteTestRunner.visitTreeEntry(dynamicTestIdentifier, hasChildren, testCount, true, parentId); } } + /** + * @param testIdentifier the test identifier whose parent id is required + * @param testPlan the test plan containing the test + * @return the parent id from {@link TestIdMap} if the parent is present, otherwise + * <code>"-1"</code> + */ + private String getParentId(TestIdentifier testIdentifier, TestPlan testPlan) { + // Same as JUnit5TestReference.getParentId(TestIdentifier testIdentifier, TestPlan testPlan). + return testPlan.getParent(testIdentifier).map(parent -> fRemoteTestRunner.getTestId(new JUnit5Identifier(parent))).orElse("-1"); //$NON-NLS-1$ + } + private ITestIdentifier getIdentifier(TestIdentifier testIdentifier, boolean ignored, boolean assumptionFailed) { if (ignored) { return new IgnoredTestIdentifier(testIdentifier); diff --git a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestLoader.java b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestLoader.java index 1ac0e05d38..4908e0c725 100644 --- a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestLoader.java +++ b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestLoader.java @@ -30,8 +30,11 @@ public class JUnit5TestLoader implements ITestLoader { private Launcher fLauncher= LauncherFactory.create(); + private RemoteTestRunner fRemoteTestRunner; + @Override public ITestReference[] loadTests(Class[] testClasses, String testName, String[] failureNames, String[] packages, String[][] includeExcludeTags, String uniqueId, RemoteTestRunner listener) { + fRemoteTestRunner= listener; ITestReference[] refs= new ITestReference[0]; if (uniqueId != null && !uniqueId.trim().isEmpty()) { refs= new ITestReference[1]; @@ -62,12 +65,12 @@ public class JUnit5TestLoader implements ITestLoader { private ITestReference createFilteredTest(Class<?> clazz, String testName, String[][] includeExcludeTags) { LauncherDiscoveryRequest request= LauncherDiscoveryRequestBuilder.request().selectors(DiscoverySelectors.selectMethod(clazz.getName() + "#" + testName)).filters(getTagFilters(includeExcludeTags)).build(); //$NON-NLS-1$ - return new JUnit5TestReference(request, fLauncher); + return new JUnit5TestReference(request, fLauncher, fRemoteTestRunner); } private ITestReference createUnfilteredTest(Class<?> clazz, String[][] includeExcludeTags) { LauncherDiscoveryRequest request= LauncherDiscoveryRequestBuilder.request().selectors(DiscoverySelectors.selectClass(clazz)).filters(getTagFilters(includeExcludeTags)).build(); - return new JUnit5TestReference(request, fLauncher); + return new JUnit5TestReference(request, fLauncher, fRemoteTestRunner); } private ITestReference createTest(String pkg, String[][] includeExcludeTags) { @@ -87,12 +90,12 @@ public class JUnit5TestLoader implements ITestLoader { .filters(getTagFilters(includeExcludeTags)) .build(); - return new JUnit5TestReference(request, fLauncher); + return new JUnit5TestReference(request, fLauncher, fRemoteTestRunner); } private ITestReference createUniqueIdTest(String uniqueId, String[][] includeExcludeTags) { LauncherDiscoveryRequest request= LauncherDiscoveryRequestBuilder.request().selectors(DiscoverySelectors.selectUniqueId(uniqueId)).filters(getTagFilters(includeExcludeTags)).build(); - return new JUnit5TestReference(request, fLauncher); + return new JUnit5TestReference(request, fLauncher, fRemoteTestRunner); } private Filter<?>[] getTagFilters(String[][] includeExcludeTags) { diff --git a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestReference.java b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestReference.java index 6db11028fe..74eea8603a 100644 --- a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestReference.java +++ b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestReference.java @@ -33,9 +33,12 @@ public class JUnit5TestReference implements ITestReference { private TestPlan fTestPlan; - public JUnit5TestReference(LauncherDiscoveryRequest request, Launcher launcher) { + private RemoteTestRunner fRemoteTestRunner; + + public JUnit5TestReference(LauncherDiscoveryRequest request, Launcher launcher, RemoteTestRunner remoteTestRunner) { fRequest= request; fLauncher= launcher; + fRemoteTestRunner= remoteTestRunner; fTestPlan= fLauncher.discover(fRequest); } @@ -53,7 +56,7 @@ public class JUnit5TestReference implements ITestReference { } } - void sendTree(IVisitsTestTrees notified, TestIdentifier testIdentifier) { + private void sendTree(IVisitsTestTrees notified, TestIdentifier testIdentifier) { JUnit5Identifier identifier= new JUnit5Identifier(testIdentifier); String parentId= getParentId(testIdentifier, fTestPlan); if (testIdentifier.isTest()) { @@ -73,13 +76,14 @@ public class JUnit5TestReference implements ITestReference { * @return the parent id from {@link TestIdMap} if the parent is present, otherwise * <code>"-1"</code> */ - static String getParentId(TestIdentifier testIdentifier, TestPlan testPlan) { - return testPlan.getParent(testIdentifier).map(parent -> RemoteTestRunner.fgTestRunServer.getTestId(new JUnit5Identifier(parent))).orElse("-1"); //$NON-NLS-1$ + private String getParentId(TestIdentifier testIdentifier, TestPlan testPlan) { + // Same as JUnit5TestListener.getParentId(TestIdentifier testIdentifier, TestPlan testPlan) + return testPlan.getParent(testIdentifier).map(parent -> fRemoteTestRunner.getTestId(new JUnit5Identifier(parent))).orElse("-1"); //$NON-NLS-1$ } @Override public void run(TestExecution execution) { - fLauncher.execute(fRequest, new JUnit5TestListener(execution.getListener())); + fLauncher.execute(fRequest, new JUnit5TestListener(execution.getListener(), fRemoteTestRunner)); } @Override |
