From ba664a232133d615480d3449bca9d4e8f9bbee72 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 6 Jul 2015 18:25:18 +0300 Subject: [PATCH] testng: listen for configuration methods starts (IDEA-140020) --- .../configuration/TestNGTreeHierarchyTest.java | 13 +++++++++---- .../src/org/testng/IDEARemoteTestNG.java | 1 + .../src/org/testng/IDEATestNGRemoteListener.java | 16 +++++++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java b/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java index ad7c1eec1277..c4208f792ab9 100644 --- a/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java +++ b/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java @@ -32,7 +32,6 @@ import java.io.OutputStream; import java.io.PrintStream; import java.util.Arrays; import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; public class TestNGTreeHierarchyTest { @@ -210,11 +209,15 @@ public class TestNGTreeHierarchyTest { final String className = "a.ATest"; listener.onSuiteStart(className, true); for(String methodName : new String[] {"test1", "test2"}) { - listener.onConfigurationSuccess(new MockTestNGResult(className, "setUp")); + final MockTestNGResult setUp = new MockTestNGResult(className, "setUp"); + listener.onConfigurationStart(setUp); + listener.onConfigurationSuccess(setUp); final MockTestNGResult result = new MockTestNGResult(className, methodName); listener.onTestStart(result); listener.onTestFinished(result); - listener.onConfigurationSuccess(new MockTestNGResult(className, "tearDown")); + final MockTestNGResult tearDown = new MockTestNGResult(className, "tearDown"); + listener.onConfigurationStart(tearDown); + listener.onConfigurationSuccess(tearDown); } listener.onSuiteFinish(className); @@ -253,7 +256,9 @@ public class TestNGTreeHierarchyTest { final IDEATestNGRemoteListener listener = createListener(buf); final String className = "a.ATest"; listener.onSuiteStart(className, true); - listener.onConfigurationFailure(new MockTestNGResult(className, "setUp", createExceptionWithoutTrace(), ArrayUtil.EMPTY_OBJECT_ARRAY)); + final MockTestNGResult setUp = new MockTestNGResult(className, "setUp", createExceptionWithoutTrace(), ArrayUtil.EMPTY_OBJECT_ARRAY); + listener.onConfigurationStart(setUp); + listener.onConfigurationFailure(setUp); listener.onSuiteFinish(className); Assert.assertEquals("output: " + buf, "\n" + diff --git a/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java b/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java index 03c21b7f9d04..813027b17bff 100644 --- a/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java +++ b/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java @@ -69,6 +69,7 @@ public class IDEARemoteTestNG extends TestNG { final IDEATestNGRemoteListener listener = new IDEATestNGRemoteListener(); addListener((ISuiteListener)listener); addListener((ITestListener)listener); + addListener((IInvokedMethodListener)listener); super.run(); System.exit(0); } diff --git a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java index 1e4926526b18..d170420de444 100644 --- a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java +++ b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java @@ -13,7 +13,7 @@ import java.util.*; * User: anna * Date: 5/22/13 */ -public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener{ +public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener, IInvokedMethodListener { private final PrintStream myPrintStream; private final List myCurrentSuites = new ArrayList(); @@ -50,6 +50,14 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener myCurrentSuites.clear(); } + public synchronized void beforeInvocation(IInvokedMethod method, ITestResult testResult) { + if (!testResult.getMethod().isTest()) { + onConfigurationStart(new DelegatedResult(testResult)); + } + } + //should be covered by test listeners + public void afterInvocation(IInvokedMethod method, ITestResult testResult) {} + public synchronized void onConfigurationSuccess(ITestResult result) { onConfigurationSuccess(new DelegatedResult(result)); } @@ -101,13 +109,15 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener myInvocationCounts.put(qualifiedName, invocationCount + 1); } - public void onConfigurationSuccess(ExposedTestResult result) { + public void onConfigurationStart(ExposedTestResult result) { onTestStart(result, null, -1, true); + } + + public void onConfigurationSuccess(ExposedTestResult result) { onTestFinished(result); } public void onConfigurationFailure(ExposedTestResult result) { - onTestStart(result, null, -1, true); onTestFailure(result); }