You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/02/04 22:11:14 UTC
svn commit: r1728555 - in /jmeter/trunk: test/src/org/apache/jmeter/control/
test/src/org/apache/jmeter/gui/util/ test/src/org/apache/jmeter/junit/
test/src/org/apache/jmeter/junit/categories/
test/src/org/apache/jmeter/protocol/http/control/gui/ test/...
Author: pmouawad
Date: Thu Feb 4 21:11:13 2016
New Revision: 1728555
URL: http://svn.apache.org/viewvc?rev=1728555&view=rev
Log:
Bug 58967 : use junit categories to exclude tests that need a gui
#resolve #107
Bugzilla Id: 58967
Added:
jmeter/trunk/test/src/org/apache/jmeter/junit/categories/
jmeter/trunk/test/src/org/apache/jmeter/junit/categories/ExcludeCategoryFilter.java (with props)
jmeter/trunk/test/src/org/apache/jmeter/junit/categories/NeedGuiTests.java (with props)
Modified:
jmeter/trunk/test/src/org/apache/jmeter/control/TestOnceOnlyController.java
jmeter/trunk/test/src/org/apache/jmeter/gui/util/TestMenuFactory.java
jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/gui/TestHttpTestSampleGui.java
jmeter/trunk/test/src/org/apache/jmeter/protocol/http/sampler/PackageTest.java
jmeter/trunk/test/src/org/apache/jorphan/test/AllTests.java
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/test/src/org/apache/jmeter/control/TestOnceOnlyController.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/control/TestOnceOnlyController.java?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/control/TestOnceOnlyController.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/control/TestOnceOnlyController.java Thu Feb 4 21:11:13 2016
@@ -238,94 +238,4 @@ public class TestOnceOnlyController exte
assertEquals(expectedNoSamples, counter);
}
- // Test skipped for now as behaviour is not yet properly defined
- public void notestInsideInterleave() throws Exception {
- // Test to show current problem with InterleaveController
- // I am not sure if the expected order of the samples
- // below are correct, because I am not sure if it is
- // properly defined how the InterleaveController and
- // OnlyOnceController should function.
-
- // Test plan with OnlyOnceController inside inner loop
- // Set up the test plan
- LoopController controller = new LoopController();
- final int outerLoopCount = 4;
- controller.setLoops(outerLoopCount);
- // OnlyOnce samples
- OnceOnlyController sub_1 = new OnceOnlyController();
- sub_1.setName("outer OnlyOnce");
- sub_1.addTestElement(new TestSampler("one"));
- sub_1.addTestElement(new TestSampler("two"));
- controller.addTestElement(sub_1);
- controller.addIterationListener(sub_1);
- // Outer sample
- controller.addTestElement(new TestSampler("three"));
- // Inner loop
- LoopController sub_2 = new LoopController();
- final int innerLoopCount = 5;
- sub_2.setLoops(innerLoopCount);
- sub_2.addTestElement(new TestSampler("four"));
- // OnlyOnce inside inner loop
- OnceOnlyController sub_3 = new OnceOnlyController();
- sub_3.setName("In loop OnlyOnce");
- sub_3.addTestElement(new TestSampler("five"));
- sub_3.addTestElement(new TestSampler("six"));
- sub_2.addTestElement(sub_3);
- sub_2.addIterationListener(sub_3);
- // InterleaveController in inner loop
- InterleaveControl sub_4 = new InterleaveControl();
- sub_4.setStyle(InterleaveControl.USE_SUB_CONTROLLERS);
- // OnlyOnce inside InterleaveController
- OnceOnlyController sub_5 = new OnceOnlyController();
- sub_5.addTestElement(new TestSampler("seven"));
- sub_5.addTestElement(new TestSampler("eight"));
- sub_5.setName("Inside InterleaveController OnlyOnce");
- sub_4.addTestElement(sub_5);
- sub_4.addIterationListener(sub_5);
- // Samples inside InterleaveController
- sub_4.addTestElement(new TestSampler("nine"));
- sub_4.addTestElement(new TestSampler("ten"));
- sub_2.addTestElement(sub_4);
- // Sample in inner loop
- sub_2.addTestElement(new TestSampler("eleven"));
- controller.addTestElement(sub_2);
-
- // Compute the expected sample names
- String[] onlyOnceOrder = new String[] { "one", "two" };
- String[] order = new String[] { "three", "four", "five", "six", "seven", "eight", "eleven",
- "four", "nine", "eleven",
- "four", "ten", "eleven",
- "four", "nine", "eleven",
- "four", "ten", "eleven" };
- // Outer only once + ("three" + "only once five and six" + "eight in interleave only once" + ("four" + "interleave" + "eleven") * innerLoopCount) * outerLoopCount;
- int expectedNoSamples = 2 + (1 + 2 + 1 + (1 + 1 + 1) * innerLoopCount) * outerLoopCount;
- String[] expectedSamples = new String[expectedNoSamples];
- // The only once samples
- System.arraycopy(onlyOnceOrder, 0, expectedSamples, 0, onlyOnceOrder.length);
-
- // The outer sample and the inner loop samples
- final int onceOnlySamples = onlyOnceOrder.length;
- for (int i = 0; i < order.length * outerLoopCount; i++) {
- expectedSamples[onceOnlySamples + i] = order[i % order.length];
- }
-
- // Execute the test pan
- controller.setRunningVersion(true);
- sub_1.setRunningVersion(true);
- sub_2.setRunningVersion(true);
- sub_3.setRunningVersion(true);
- sub_4.setRunningVersion(true);
- sub_5.setRunningVersion(true);
- controller.initialize();
-
- int counter = 0;
- TestElement sampler = null;
- while ((sampler = controller.next()) != null) {
- System.out.println("ex: " + expectedSamples[counter] + " ac: " + sampler.getPropertyAsString(TestElement.NAME));
- assertEquals(expectedSamples[counter], sampler.getPropertyAsString(TestElement.NAME));
-
- counter++;
- }
- assertEquals(expectedNoSamples, counter);
- }
}
Modified: jmeter/trunk/test/src/org/apache/jmeter/gui/util/TestMenuFactory.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/gui/util/TestMenuFactory.java?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/gui/util/TestMenuFactory.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/gui/util/TestMenuFactory.java Thu Feb 4 21:11:13 2016
@@ -20,40 +20,33 @@ package org.apache.jmeter.gui.util;
import static org.junit.Assert.assertFalse;
-import java.awt.GraphicsEnvironment;
-
import org.apache.jmeter.junit.JMeterTestCase;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
+import org.apache.jmeter.junit.categories.NeedGuiTests;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
+@Category(NeedGuiTests.class)
public final class TestMenuFactory extends JMeterTestCase {
- private static final Logger log = LoggingManager.getLoggerForClass();
-
private static void check(String s, int i) throws Exception {
assertFalse("The number of " + s + " should not be 0", 0 == i);
}
- @Test
- public void testMenu() throws Exception {
- if(GraphicsEnvironment.isHeadless()) {
- System.out.println("Skipping test:"+getClass().getName()+"#testCloneSampler"+", cannot run in Headless mode");
- log.warn("Skipping test:"+getClass().getName()+"#testCloneSampler"+", cannot run in Headless mode");
- return;
- }
- check("menumap", MenuFactory.menuMap_size());
-
- check("assertions", MenuFactory.assertions_size());
- check("configElements", MenuFactory.configElements_size());
- check("controllers", MenuFactory.controllers_size());
- check("listeners", MenuFactory.listeners_size());
- check("nonTestElements", MenuFactory.nonTestElements_size());
- check("postProcessors", MenuFactory.postProcessors_size());
- check("preProcessors", MenuFactory.preProcessors_size());
- check("samplers", MenuFactory.samplers_size());
- check("timers", MenuFactory.timers_size());
+ @Test
+ public void testMenu() throws Exception {
+
+ check("menumap", MenuFactory.menuMap_size());
+
+ check("assertions", MenuFactory.assertions_size());
+ check("configElements", MenuFactory.configElements_size());
+ check("controllers", MenuFactory.controllers_size());
+ check("listeners", MenuFactory.listeners_size());
+ check("nonTestElements", MenuFactory.nonTestElements_size());
+ check("postProcessors", MenuFactory.postProcessors_size());
+ check("preProcessors", MenuFactory.preProcessors_size());
+ check("samplers", MenuFactory.samplers_size());
+ check("timers", MenuFactory.timers_size());
- check("elementstoskip", MenuFactory.elementsToSkip_size());
- }
+ check("elementstoskip", MenuFactory.elementsToSkip_size());
+ }
}
Modified: jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java Thu Feb 4 21:11:13 2016
@@ -37,9 +37,6 @@ import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
import org.apache.jmeter.config.gui.ObsoleteGui;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.Function;
@@ -61,6 +58,9 @@ import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
public class JMeterTest extends JMeterTestCaseJUnit3 {
private static final Logger log = LoggingManager.getLoggerForClass();
@@ -653,8 +653,6 @@ public class JMeterTest extends JMeterTe
PropertyIterator iter2 = item.propertyIterator();
while (iter2.hasNext()) {
JMeterProperty item2 = iter2.next();
- // [sebb] assertEquals(item2,
- // clonedItem.getProperty(item2.getName()));
assertEquals(item2.getStringValue(), clonedItem.getProperty(item2.getName()).getStringValue());
assertTrue(item2 != clonedItem.getProperty(item2.getName()));
}
Added: jmeter/trunk/test/src/org/apache/jmeter/junit/categories/ExcludeCategoryFilter.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/junit/categories/ExcludeCategoryFilter.java?rev=1728555&view=auto
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/junit/categories/ExcludeCategoryFilter.java (added)
+++ jmeter/trunk/test/src/org/apache/jmeter/junit/categories/ExcludeCategoryFilter.java Thu Feb 4 21:11:13 2016
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.junit.categories;
+
+import org.junit.experimental.categories.Category;
+import org.junit.runner.Description;
+import org.junit.runner.manipulation.Filter;
+
+/**
+ * Junit Filter that excludes test annotated with a given marker interface
+ * @since 3.0
+ */
+public class ExcludeCategoryFilter extends Filter {
+
+ private Class<?> excludedClass;
+
+ public ExcludeCategoryFilter(Class<?> excludedClass) {
+ super();
+ this.excludedClass = excludedClass;
+ }
+
+ @Override
+ public String describe() {
+ return "JMeter ExcludeCategoryFilter";
+ }
+
+ @Override
+ public boolean shouldRun(Description description) {
+ //TODO : check the class hierarchy and not only the current class
+ Category cat = description.getAnnotation(Category.class);
+ if(cat != null) {
+ Class<?>[] categories = cat.value();
+ for (Class<?> class1 : categories) {
+ if(excludedClass.isAssignableFrom(class1)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+}
Propchange: jmeter/trunk/test/src/org/apache/jmeter/junit/categories/ExcludeCategoryFilter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jmeter/trunk/test/src/org/apache/jmeter/junit/categories/NeedGuiTests.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/junit/categories/NeedGuiTests.java?rev=1728555&view=auto
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/junit/categories/NeedGuiTests.java (added)
+++ jmeter/trunk/test/src/org/apache/jmeter/junit/categories/NeedGuiTests.java Thu Feb 4 21:11:13 2016
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.junit.categories;
+
+/**
+ * JUnit category marker for tests that could not not run in headless mode
+ */
+public interface NeedGuiTests {
+ // yeah !
+}
Propchange: jmeter/trunk/test/src/org/apache/jmeter/junit/categories/NeedGuiTests.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/gui/TestHttpTestSampleGui.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/gui/TestHttpTestSampleGui.java?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/gui/TestHttpTestSampleGui.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/gui/TestHttpTestSampleGui.java Thu Feb 4 21:11:13 2016
@@ -20,41 +20,30 @@ package org.apache.jmeter.protocol.http.
import static org.junit.Assert.assertEquals;
-import java.awt.GraphicsEnvironment;
+import org.apache.jmeter.junit.categories.NeedGuiTests;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
+@Category(NeedGuiTests.class)
public class TestHttpTestSampleGui {
- private static final Logger log = LoggingManager.getLoggerForClass();
private HttpTestSampleGui gui;
- @Before
- public void setUp() {
- if(GraphicsEnvironment.isHeadless()) {
- System.out.println("Skipping test:"+getClass().getName()+", cannot run in Headless mode");
- log.warn("Skipping test:"+getClass().getName()+", cannot run in Headless mode");
- return;
- }
- gui = new HttpTestSampleGui();
- }
-
- @Test
- public void testCloneSampler() throws Exception {
- if(GraphicsEnvironment.isHeadless()) {
- System.out.println("Skipping test:"+getClass().getName()+"#testCloneSampler"+", cannot run in Headless mode");
- log.warn("Skipping test:"+getClass().getName()+"#testCloneSampler"+", cannot run in Headless mode");
- return;
- }
- HTTPSamplerBase sampler = (HTTPSamplerBase) gui.createTestElement();
- sampler.addArgument("param", "value");
- HTTPSamplerBase clonedSampler = (HTTPSamplerBase) sampler.clone();
- clonedSampler.setRunningVersion(true);
- sampler.getArguments().getArgument(0).setValue("new value");
- assertEquals("Sampler didn't clone correctly", "new value", sampler.getArguments().getArgument(0)
- .getValue());
- }
+ @Before
+ public void setUp() {
+ gui = new HttpTestSampleGui();
+ }
+
+ @Test
+ public void testCloneSampler() throws Exception {
+ HTTPSamplerBase sampler = (HTTPSamplerBase) gui.createTestElement();
+ sampler.addArgument("param", "value");
+ HTTPSamplerBase clonedSampler = (HTTPSamplerBase) sampler.clone();
+ clonedSampler.setRunningVersion(true);
+ sampler.getArguments().getArgument(0).setValue("new value");
+ assertEquals("Sampler didn't clone correctly", "new value", sampler.getArguments().getArgument(0)
+ .getValue());
+ }
}
Modified: jmeter/trunk/test/src/org/apache/jmeter/protocol/http/sampler/PackageTest.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/sampler/PackageTest.java?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/protocol/http/sampler/PackageTest.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/protocol/http/sampler/PackageTest.java Thu Feb 4 21:11:13 2016
@@ -23,28 +23,20 @@ package org.apache.jmeter.protocol.http.
import static org.junit.Assert.assertEquals;
-import java.awt.GraphicsEnvironment;
-
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.ConfigTestElement;
+import org.apache.jmeter.junit.categories.NeedGuiTests;
import org.apache.jmeter.protocol.http.config.gui.HttpDefaultsGui;
import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
import org.apache.jmeter.protocol.http.util.HTTPArgument;
-import org.apache.jorphan.logging.LoggingManager;
-import org.apache.log.Logger;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
+@Category(NeedGuiTests.class)
public class PackageTest {
- private static final Logger log = LoggingManager.getLoggerForClass();
@Test
public void testConfiguring() throws Exception {
- if(GraphicsEnvironment.isHeadless()) {
- System.out.println("Skipping test:"+getClass().getName()+"#testConfiguring"+", cannot run in Headless mode");
- log.warn("Skipping test:"+getClass().getName()+"#testConfiguring"+", cannot run in Headless mode");
- return;
- }
-
HTTPSamplerBase sampler = (HTTPSamplerBase) new HttpTestSampleGui().createTestElement();
configure(sampler);
}
Modified: jmeter/trunk/test/src/org/apache/jorphan/test/AllTests.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jorphan/test/AllTests.java?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jorphan/test/AllTests.java (original)
+++ jmeter/trunk/test/src/org/apache/jorphan/test/AllTests.java Thu Feb 4 21:11:13 2016
@@ -18,6 +18,7 @@
package org.apache.jorphan.test;
+import java.awt.GraphicsEnvironment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -31,18 +32,23 @@ import java.util.List;
import java.util.Locale;
import java.util.Properties;
-import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.jmeter.junit.categories.ExcludeCategoryFilter;
+import org.apache.jmeter.junit.categories.NeedGuiTests;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.reflect.ClassFilter;
import org.apache.jorphan.reflect.ClassFinder;
import org.apache.jorphan.util.JOrphanUtils;
import org.apache.log.Logger;
+import org.junit.internal.RealSystem;
+import org.junit.internal.TextListener;
+import org.junit.runner.Computer;
import org.junit.runner.JUnitCore;
+import org.junit.runner.Request;
+import org.junit.runner.Result;
+import org.junit.runner.notification.RunListener;
-import junit.framework.Test;
import junit.framework.TestCase;
-import junit.framework.TestSuite;
/**
* Provides a quick and easy way to run all <a href="http://http://junit.org">junit</a>
@@ -192,12 +198,37 @@ public final class AllTests {
try {
System.out.println("Searching junit tests in : "+args[0]);
List<String> tests = findJMeterJUnitTests(args[0]);
- JUnitCore.main(tests.toArray(new String[0]));
- } catch (IOException e) {
+ Class<?>[] classes = asClasses(tests);
+ JUnitCore jUnitCore = new JUnitCore();
+
+ // this listener is in the internal junit package
+ // if it breaks, replace it with a custom text listener
+ RunListener listener = new TextListener(new RealSystem());
+ jUnitCore.addListener(listener);
+
+ Request request = Request.classes(new Computer(), classes);
+ if(GraphicsEnvironment.isHeadless()) {
+ request = request.filterWith(new ExcludeCategoryFilter(NeedGuiTests.class));
+ }
+ Result result = jUnitCore.run(request);
+
+ System.exit(result.wasSuccessful() ? 0 : 1);
+ } catch (Exception e) {
+ e.printStackTrace();
System.exit(1);
}
}
+ private static Class<?>[] asClasses(List<String> tests) throws ClassNotFoundException {
+ Class<?>[] classes = new Class<?>[tests.size()];
+ for (int i = 0; i < classes.length; i++) {
+ String test = tests.get(i);
+ classes[i] = Class.forName(test, true, Thread.currentThread().getContextClassLoader());
+ }
+
+ return classes;
+ }
+
/**
* An overridable method that initializes the logging for the unit test run,
* using the properties file passed in as the second argument.
@@ -253,79 +284,6 @@ public final class AllTests {
}
}
- /*
- * Externally callable suite() method for use by JUnit Allows tests to be
- * run directly under JUnit, rather than using the startup code in the rest
- * of the module. No parameters can be passed in, so it is less flexible.
- */
- @Deprecated
- public static TestSuite suite() {
- String args[] = { "../lib/ext", "./testfiles/jmetertest.properties", "org.apache.jmeter.util.JMeterUtils" };
-
- initializeManager(args);
- return suite(args[0]);
- }
-
- /**
- * A unit test suite for JUnit.
- *
- * @return The test suite
- */
- @Deprecated
- private static TestSuite suite(String searchPaths) {
- TestSuite suite = new TestSuite("All Tests");
- System.out.println("Scanning "+searchPaths+ " for test cases");
- int tests=0;
- int suites=0;
- try {
- log.info("ClassFinder(TestCase)");
- List<String> classList = findJMeterJUnitTests(searchPaths);
- int sz=classList.size();
- log.info("ClassFinder(TestCase) found: "+sz+ " TestCase classes");
- System.out.println("ClassFinder found: "+sz+ " TestCase classes");
- for (String name : classList) {
- try {
- /*
- * TestSuite only finds testXXX() methods, and does not look
- * for suite() methods.
- *
- * To provide more compatibilty with stand-alone tests,
- * where JUnit does look for a suite() method, check for it
- * first here.
- *
- */
-
- Class<?> clazz = Class.forName(name);
- Test t = null;
- try {
- Method m = clazz.getMethod("suite", new Class[0]);
- t = (Test) m.invoke(clazz, (Object[])null);
- suites++;
- } catch (NoSuchMethodException e) {
- } // this is not an error, the others are
- // catch (SecurityException e) {}
- // catch (IllegalAccessException e) {}
- // catch (IllegalArgumentException e) {}
- // catch (InvocationTargetException e) {}
-
- if (t == null) {
- t = new TestSuite(clazz);
- }
-
- tests++;
- suite.addTest(t);
- } catch (Exception ex) {
- System.out.println("ERROR: (see logfile) could not add test for class " + name + " " + ExceptionUtils.getStackTrace(ex));
- log.error("error adding test :", ex);
- }
- }
- } catch (IOException e) {
- log.error("", e);
- }
- System.out.println("Created: "+tests+" tests including "+suites+" suites");
- return suite;
- }
-
private static List<String> findJMeterJUnitTests(String searchPaths) throws IOException {
List<String> classList = ClassFinder.findClasses(JOrphanUtils.split(searchPaths, ","), new JunitTestFilter());
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1728555&r1=1728554&r2=1728555&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Thu Feb 4 21:11:13 2016
@@ -218,6 +218,7 @@ Summary
<li><bug>58897</bug>Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
<li><bug>58949</bug>Cleanup of ldap code. Based on a patch by Benoit Wiart (benoit dot wiart at gmail.com)</li>
<li><bug>58897</bug>Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
+<li><bug>58967</bug>Use junit categories to exclude tests that need a gui. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
</ul>
<!-- =================== Bug fixes =================== -->