Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Niedermayr2015-01-16 12:33:38 +0000
committerJudith Gull2015-01-20 17:24:12 +0000
commitd5cd051c29f479d906a084ed8a628b5f42ae9cf4 (patch)
tree56c8e030f54d779de57f35ccf24611cf347c335b
parentb10bd0e62bda35ac691dccb01587aa3a6b9c11b5 (diff)
downloadorg.eclipse.scout.rt-d5cd051c29f479d906a084ed8a628b5f42ae9cf4.tar.gz
org.eclipse.scout.rt-d5cd051c29f479d906a084ed8a628b5f42ae9cf4.tar.xz
org.eclipse.scout.rt-d5cd051c29f479d906a084ed8a628b5f42ae9cf4.zip
Bug 457690 - Allow non-parameterized test methods in parameterized test
classes https://bugs.eclipse.org/bugs/show_bug.cgi?id=457690 Change-Id: Ic11778840e67d718ed3c16506b1f271f05a40a7d Signed-off-by: Rainer Niedermayr <rainer.niedermayr@bsiag.com> Reviewed-on: https://git.eclipse.org/r/39957 Tested-by: Hudson CI Reviewed-by: Judith Gull <jgu@bsiag.com>
-rw-r--r--org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/rt/testing/client/runner/parameterized/ParameterizedScoutClientTestRunner.java38
-rw-r--r--org.eclipse.scout.rt.testing.server/src/org/eclipse/scout/rt/testing/server/runner/parameterized/ParameterizedScoutServerTestRunner.java38
-rw-r--r--org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtensionTest.java28
-rw-r--r--org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/SampleParameterizedTestClass.java6
-rw-r--r--org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/NonParameterized.java25
-rw-r--r--org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtension.java39
6 files changed, 137 insertions, 37 deletions
diff --git a/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/rt/testing/client/runner/parameterized/ParameterizedScoutClientTestRunner.java b/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/rt/testing/client/runner/parameterized/ParameterizedScoutClientTestRunner.java
index 576fca03f0..7427b56797 100644
--- a/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/rt/testing/client/runner/parameterized/ParameterizedScoutClientTestRunner.java
+++ b/org.eclipse.scout.rt.testing.client/src/org/eclipse/scout/rt/testing/client/runner/parameterized/ParameterizedScoutClientTestRunner.java
@@ -30,7 +30,7 @@ import org.junit.runners.model.Statement;
* <pre>
* &#064;RunWith(ParameterizedScoutServerTestRunner.class)
* public class SampleParameterizedServerTest {
- *
+ *
* &#064;Parameters
* public static List&lt;IScoutTestParameter&gt; getParameters() {
* List&lt;IScoutTestParameter&gt; parametersList = new LinkedList&lt;IScoutTestParameter&gt;();
@@ -38,26 +38,32 @@ import org.junit.runners.model.Statement;
* parametersList.add(new MathTestParameter(&quot;Scenario 2&quot;, 5));
* return parametersList;
* }
- *
+ *
* private final MathTestParameter m_testParameter;
- *
+ *
* public SampleParameterizedServerTest(MathTestParameter testParameter) {
* m_testParameter = testParameter;
* }
- *
+ *
* &#064;Test
* public void testIsGreaterZero() {
* assertTrue(m_testParameter.getX() &gt; 0);
* }
- *
+ *
+ * &#064;Test
+ * &#064;NonParameterized
+ * public void testGeneral() {
+ * assertFalse(0 &gt; 0);
+ * }
+ *
* static class MathTestParameter extends AbstractScoutTestParameter {
* private int m_x;
- *
+ *
* public MathTestParameter(String name, int x) {
* super(name);
* m_x = x;
* }
- *
+ *
* public int getX() {
* return m_x;
* }
@@ -89,7 +95,7 @@ public class ParameterizedScoutClientTestRunner extends ScoutClientTestRunner {
@Override
protected List<FrameworkMethod> getChildren() {
m_parameterList = ParameterizedTestRunnerExtension.loadParameterList(getTestClass());
- return ParameterizedTestRunnerExtension.createParameterizedTestMethods(super.getChildren(), m_parameterList.size());
+ return ParameterizedTestRunnerExtension.createTestMethods(super.getChildren(), m_parameterList.size());
}
@Override
@@ -103,8 +109,13 @@ public class ParameterizedScoutClientTestRunner extends ScoutClientTestRunner {
@Override
protected Statement methodBlock(FrameworkMethod method) {
- int paramsIndex = ((ParameterizedFrameworkMethod) method).getParamIndex();
- m_currentTestParameter = m_parameterList.get(paramsIndex);
+ if (method instanceof ParameterizedFrameworkMethod) {
+ int paramsIndex = ((ParameterizedFrameworkMethod) method).getParamIndex();
+ m_currentTestParameter = m_parameterList.get(paramsIndex);
+ }
+ else {
+ m_currentTestParameter = null;
+ }
return super.methodBlock(method);
}
@@ -127,6 +138,11 @@ public class ParameterizedScoutClientTestRunner extends ScoutClientTestRunner {
@Override
protected Description describeChild(FrameworkMethod method) {
- return ParameterizedTestRunnerExtension.describeChild(getTestClass(), (ParameterizedFrameworkMethod) method, testName(method), m_parameterList);
+ if (method instanceof ParameterizedFrameworkMethod) {
+ return ParameterizedTestRunnerExtension.describeParameterizedChild(getTestClass(), (ParameterizedFrameworkMethod) method, testName(method), m_parameterList);
+ }
+ else {
+ return super.describeChild(method);
+ }
}
}
diff --git a/org.eclipse.scout.rt.testing.server/src/org/eclipse/scout/rt/testing/server/runner/parameterized/ParameterizedScoutServerTestRunner.java b/org.eclipse.scout.rt.testing.server/src/org/eclipse/scout/rt/testing/server/runner/parameterized/ParameterizedScoutServerTestRunner.java
index 4746c76fee..2a74e3cac9 100644
--- a/org.eclipse.scout.rt.testing.server/src/org/eclipse/scout/rt/testing/server/runner/parameterized/ParameterizedScoutServerTestRunner.java
+++ b/org.eclipse.scout.rt.testing.server/src/org/eclipse/scout/rt/testing/server/runner/parameterized/ParameterizedScoutServerTestRunner.java
@@ -30,7 +30,7 @@ import org.junit.runners.model.Statement;
* <pre>
* &#064;RunWith(ParameterizedScoutServerTestRunner.class)
* public class SampleParameterizedServerTest {
- *
+ *
* &#064;Parameters
* public static List&lt;IScoutTestParameter&gt; getParameters() {
* List&lt;IScoutTestParameter&gt; parametersList = new LinkedList&lt;IScoutTestParameter&gt;();
@@ -38,26 +38,32 @@ import org.junit.runners.model.Statement;
* parametersList.add(new MathTestParameter(&quot;Scenario 2&quot;, 5));
* return parametersList;
* }
- *
+ *
* private final MathTestParameter m_testParameter;
- *
+ *
* public SampleParameterizedServerTest(MathTestParameter testParameter) {
* m_testParameter = testParameter;
* }
- *
+ *
* &#064;Test
* public void testIsGreaterZero() {
* assertTrue(m_testParameter.getX() &gt; 0);
* }
- *
+ *
+ * &#064;Test
+ * &#064;NonParameterized
+ * public void testGeneral() {
+ * assertFalse(0 &gt; 0);
+ * }
+ *
* static class MathTestParameter extends AbstractScoutTestParameter {
* private int m_x;
- *
+ *
* public MathTestParameter(String name, int x) {
* super(name);
* m_x = x;
* }
- *
+ *
* public int getX() {
* return m_x;
* }
@@ -83,7 +89,7 @@ public class ParameterizedScoutServerTestRunner extends ScoutServerTestRunner {
@Override
protected List<FrameworkMethod> getChildren() {
m_parameterList = ParameterizedTestRunnerExtension.loadParameterList(getTestClass());
- return ParameterizedTestRunnerExtension.createParameterizedTestMethods(super.getChildren(), m_parameterList.size());
+ return ParameterizedTestRunnerExtension.createTestMethods(super.getChildren(), m_parameterList.size());
}
@Override
@@ -97,8 +103,13 @@ public class ParameterizedScoutServerTestRunner extends ScoutServerTestRunner {
@Override
protected Statement methodBlock(FrameworkMethod method) {
- int paramsIndex = ((ParameterizedFrameworkMethod) method).getParamIndex();
- m_currentTestParameter = m_parameterList.get(paramsIndex);
+ if (method instanceof ParameterizedFrameworkMethod) {
+ int paramsIndex = ((ParameterizedFrameworkMethod) method).getParamIndex();
+ m_currentTestParameter = m_parameterList.get(paramsIndex);
+ }
+ else {
+ m_currentTestParameter = null;
+ }
return super.methodBlock(method);
}
@@ -121,6 +132,11 @@ public class ParameterizedScoutServerTestRunner extends ScoutServerTestRunner {
@Override
protected Description describeChild(FrameworkMethod method) {
- return ParameterizedTestRunnerExtension.describeChild(getTestClass(), (ParameterizedFrameworkMethod) method, testName(method), m_parameterList);
+ if (method instanceof ParameterizedFrameworkMethod) {
+ return ParameterizedTestRunnerExtension.describeParameterizedChild(getTestClass(), (ParameterizedFrameworkMethod) method, testName(method), m_parameterList);
+ }
+ else {
+ return super.describeChild(method);
+ }
}
}
diff --git a/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtensionTest.java b/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtensionTest.java
index d612bafd0d..8ecba9ea23 100644
--- a/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtensionTest.java
+++ b/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtensionTest.java
@@ -30,12 +30,14 @@ import org.junit.runners.model.TestClass;
public class ParameterizedTestRunnerExtensionTest {
private TestClass m_testClass;
- private FrameworkMethod m_testMethod;
+ private FrameworkMethod m_parameterizedTestMethod;
+ private FrameworkMethod m_nonParameterizedTestMethod;
@Before
public void before() throws NoSuchMethodException, SecurityException {
m_testClass = new TestClass(SampleParameterizedTestClass.class);
- m_testMethod = new FrameworkMethod(SampleParameterizedTestClass.class.getMethod("testSomething"));
+ m_parameterizedTestMethod = new FrameworkMethod(SampleParameterizedTestClass.class.getMethod("testSomething"));
+ m_nonParameterizedTestMethod = new FrameworkMethod(SampleParameterizedTestClass.class.getMethod("testSomethingNonParameterized"));
}
@Test
@@ -59,11 +61,21 @@ public class ParameterizedTestRunnerExtensionTest {
@Test
public void testCreateParameterizedTestMethods() {
List<FrameworkMethod> testMethodLists = new LinkedList<FrameworkMethod>();
- testMethodLists.add(m_testMethod);
+ testMethodLists.add(m_parameterizedTestMethod);
- List<FrameworkMethod> createdParameterizedTestMethods = ParameterizedTestRunnerExtension.createParameterizedTestMethods(testMethodLists, 2);
- assertNotNull(createdParameterizedTestMethods);
- assertEquals(2, createdParameterizedTestMethods.size());
+ List<FrameworkMethod> createdTestMethods = ParameterizedTestRunnerExtension.createTestMethods(testMethodLists, 2);
+ assertNotNull(createdTestMethods);
+ assertEquals(2, createdTestMethods.size());
+ }
+
+ @Test
+ public void testCreateNonParameterizedTestMethod() {
+ List<FrameworkMethod> testMethodLists = new LinkedList<FrameworkMethod>();
+ testMethodLists.add(m_nonParameterizedTestMethod);
+
+ List<FrameworkMethod> createdTestMethods = ParameterizedTestRunnerExtension.createTestMethods(testMethodLists, 2);
+ assertNotNull(createdTestMethods);
+ assertEquals(1, createdTestMethods.size());
}
@Test
@@ -91,9 +103,9 @@ public class ParameterizedTestRunnerExtensionTest {
public void testDescribeChild() {
final String testName = SampleParameterizedTestClass.class.getSimpleName();
final List<IScoutTestParameter> parameterList = SampleParameterizedTestClass.getParameters();
- ParameterizedFrameworkMethod parameterizedTestMethod = new ParameterizedFrameworkMethod(m_testMethod, 0);
+ ParameterizedFrameworkMethod parameterizedTestMethod = new ParameterizedFrameworkMethod(m_parameterizedTestMethod, 0);
- Description testDescription = ParameterizedTestRunnerExtension.describeChild(m_testClass, parameterizedTestMethod, testName, parameterList);
+ Description testDescription = ParameterizedTestRunnerExtension.describeParameterizedChild(m_testClass, parameterizedTestMethod, testName, parameterList);
String expectedTestDescription = testName + " [" + SampleParameterizedTestClass.TEST_PARAMETER_NAME_1 + "]";
assertTrue(testDescription.getDisplayName().startsWith(expectedTestDescription));
}
diff --git a/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/SampleParameterizedTestClass.java b/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/SampleParameterizedTestClass.java
index 1b137e3a20..d94ccef5a5 100644
--- a/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/SampleParameterizedTestClass.java
+++ b/org.eclipse.scout.rt.testing.shared.test/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/SampleParameterizedTestClass.java
@@ -42,4 +42,10 @@ public class SampleParameterizedTestClass {
@Test
public void testSomething() {
}
+
+ @Test
+ @NonParameterized
+ public void testSomethingNonParameterized() {
+
+ }
}
diff --git a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/NonParameterized.java b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/NonParameterized.java
new file mode 100644
index 0000000000..b28be62ed8
--- /dev/null
+++ b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/NonParameterized.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2015 BSI Business Systems Integration AG.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.rt.testing.shared.runner.parameterized;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to mark a test method in a parameterized test class as not parameterized.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface NonParameterized {
+
+}
diff --git a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtension.java b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtension.java
index e95cd6b1b2..e393ca6ba7 100644
--- a/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtension.java
+++ b/org.eclipse.scout.rt.testing.shared/src/org/eclipse/scout/rt/testing/shared/runner/parameterized/ParameterizedTestRunnerExtension.java
@@ -34,7 +34,8 @@ public class ParameterizedTestRunnerExtension {
return testClass.getOnlyConstructor().newInstance(testParameter);
}
catch (Exception ex) {
- throw new Exception("Constructor can not be invoked with the parameters " + testParameter.getName() + ")", ex);
+ String parameterName = (testParameter != null ? testParameter.getName() : null);
+ throw new Exception("Constructor can not be invoked with the parameter '" + parameterName + "')", ex);
}
}
@@ -49,14 +50,38 @@ public class ParameterizedTestRunnerExtension {
}
}
- public static List<FrameworkMethod> createParameterizedTestMethods(List<FrameworkMethod> originalTestMethods, int numberOfParameterEntries) {
+ /**
+ * Creates parameterized and non parameterized test methods.
+ */
+ public static List<FrameworkMethod> createTestMethods(List<FrameworkMethod> originalTestMethods, int numberOfParameterEntries) {
+ List<FrameworkMethod> nonParameterizedTestMethods = new LinkedList<FrameworkMethod>();
+ List<FrameworkMethod> originalTestMethodsToBeParameterized = new LinkedList<FrameworkMethod>();
+
+ for (FrameworkMethod test : originalTestMethods) {
+ if (test.getAnnotation(NonParameterized.class) != null) {
+ //test case annotated with @NonParameterized
+ nonParameterizedTestMethods.add(test);
+ }
+ else {
+ originalTestMethodsToBeParameterized.add(test);
+ }
+ }
+
+ List<FrameworkMethod> result = new LinkedList<FrameworkMethod>();
+ result.addAll(nonParameterizedTestMethods);
+ result.addAll(createParameterizedTestMethods(originalTestMethodsToBeParameterized, numberOfParameterEntries));
+ return result;
+ }
+
+ protected static List<FrameworkMethod> createParameterizedTestMethods(List<FrameworkMethod> originalTestMethods, int numberOfParameterEntries) {
List<FrameworkMethod> result = new LinkedList<FrameworkMethod>();
- List<FrameworkMethod> testMethods = originalTestMethods;
for (int paramsIndex = 0; paramsIndex < numberOfParameterEntries; paramsIndex++) {
- for (FrameworkMethod test : testMethods) {
- ParameterizedFrameworkMethod parameterizedTest = new ParameterizedFrameworkMethod(test, paramsIndex);
- result.add(parameterizedTest);
+ for (FrameworkMethod test : originalTestMethods) {
+ if (test.getAnnotation(NonParameterized.class) == null) {
+ ParameterizedFrameworkMethod parameterizedTest = new ParameterizedFrameworkMethod(test, paramsIndex);
+ result.add(parameterizedTest);
+ }
}
}
@@ -88,7 +113,7 @@ public class ParameterizedTestRunnerExtension {
}
}
- public static Description describeChild(TestClass testClass, ParameterizedFrameworkMethod parameterizedMethod, String testName, List<IScoutTestParameter> parameterList) {
+ public static Description describeParameterizedChild(TestClass testClass, ParameterizedFrameworkMethod parameterizedMethod, String testName, List<IScoutTestParameter> parameterList) {
return Description.createTestDescription(testClass.getJavaClass(), String.format("%s [%s]", testName, parameterList.get(parameterizedMethod.getParamIndex()).getName()), parameterizedMethod.getAnnotations());
}
}

Back to the top