diff options
author | Rainer Niedermayr | 2015-01-16 12:33:38 +0000 |
---|---|---|
committer | Judith Gull | 2015-01-20 17:24:12 +0000 |
commit | d5cd051c29f479d906a084ed8a628b5f42ae9cf4 (patch) | |
tree | 56c8e030f54d779de57f35ccf24611cf347c335b | |
parent | b10bd0e62bda35ac691dccb01587aa3a6b9c11b5 (diff) | |
download | org.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>
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> * @RunWith(ParameterizedScoutServerTestRunner.class) * public class SampleParameterizedServerTest { - * + * * @Parameters * public static List<IScoutTestParameter> getParameters() { * List<IScoutTestParameter> parametersList = new LinkedList<IScoutTestParameter>(); @@ -38,26 +38,32 @@ import org.junit.runners.model.Statement; * parametersList.add(new MathTestParameter("Scenario 2", 5)); * return parametersList; * } - * + * * private final MathTestParameter m_testParameter; - * + * * public SampleParameterizedServerTest(MathTestParameter testParameter) { * m_testParameter = testParameter; * } - * + * * @Test * public void testIsGreaterZero() { * assertTrue(m_testParameter.getX() > 0); * } - * + * + * @Test + * @NonParameterized + * public void testGeneral() { + * assertFalse(0 > 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> * @RunWith(ParameterizedScoutServerTestRunner.class) * public class SampleParameterizedServerTest { - * + * * @Parameters * public static List<IScoutTestParameter> getParameters() { * List<IScoutTestParameter> parametersList = new LinkedList<IScoutTestParameter>(); @@ -38,26 +38,32 @@ import org.junit.runners.model.Statement; * parametersList.add(new MathTestParameter("Scenario 2", 5)); * return parametersList; * } - * + * * private final MathTestParameter m_testParameter; - * + * * public SampleParameterizedServerTest(MathTestParameter testParameter) { * m_testParameter = testParameter; * } - * + * * @Test * public void testIsGreaterZero() { * assertTrue(m_testParameter.getX() > 0); * } - * + * + * @Test + * @NonParameterized + * public void testGeneral() { + * assertFalse(0 > 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()); } } |