Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoritz Eysholdt2014-09-09 13:07:14 +0000
committerMarkus Keller2014-10-14 18:18:03 +0000
commitde90ad8e2f8a6ced3368a0b475654e03bbc6f4fe (patch)
tree529bd424136ae098cde665978bc86e5504178f04
parent80bb6a1527f4959d9bb1c22e4244fc1f672231fb (diff)
downloadeclipse.jdt.ui-de90ad8e2f8a6ced3368a0b475654e03bbc6f4fe.tar.gz
eclipse.jdt.ui-de90ad8e2f8a6ced3368a0b475654e03bbc6f4fe.tar.xz
eclipse.jdt.ui-de90ad8e2f8a6ced3368a0b475654e03bbc6f4fe.zip
Bug 443498 improved tests coverage for junit4 test executionI20141021-0800
Change-Id: I426ee36ef02a93fda5178449de75904425d5f74b Signed-off-by: Moritz Eysholdt <moritz.eysholdt@itemis.de>
-rw-r--r--org.eclipse.jdt.ui.tests/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/JUnitJUnitTests.java3
-rw-r--r--org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest3.java (renamed from org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest.java)2
-rw-r--r--org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java277
4 files changed, 281 insertions, 3 deletions
diff --git a/org.eclipse.jdt.ui.tests/META-INF/MANIFEST.MF b/org.eclipse.jdt.ui.tests/META-INF/MANIFEST.MF
index e937c4de07..dd4e686fc9 100644
--- a/org.eclipse.jdt.ui.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.ui.tests/META-INF/MANIFEST.MF
@@ -62,6 +62,6 @@ Require-Bundle:
org.eclipse.ui.views,
org.eclipse.ui.workbench.texteditor,
org.eclipse.text.tests,
- org.junit;bundle-version="4.8.1"
+ org.junit;bundle-version="4.11.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Eclipse-BundleShape: dir
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/JUnitJUnitTests.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/JUnitJUnitTests.java
index ca3ef8bf30..51bc8a8dd6 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/JUnitJUnitTests.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/JUnitJUnitTests.java
@@ -30,7 +30,8 @@ public class JUnitJUnitTests {
addDeprecatedTests(suite);
- suite.addTestSuite(TestRunListenerTest.class);
+ suite.addTestSuite(TestRunListenerTest3.class);
+ suite.addTestSuite(TestRunListenerTest4.class);
suite.addTest(TestRunSessionSerializationTests3.suite());
suite.addTest(TestRunSessionSerializationTests4.suite());
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest3.java
index 6bc94422b7..12fe1eabf1 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest3.java
@@ -25,7 +25,7 @@ import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.junit.JUnitMessages;
import org.eclipse.jdt.internal.junit.launcher.TestKindRegistry;
-public class TestRunListenerTest extends AbstractTestRunListenerTest {
+public class TestRunListenerTest3 extends AbstractTestRunListenerTest {
private String[] runSequenceTest(IType typeToLaunch) throws Exception {
TestRunLog log= new TestRunLog();
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java
new file mode 100644
index 0000000000..36a12a8c11
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java
@@ -0,0 +1,277 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2014 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.jdt.junit.tests;
+
+import org.eclipse.jdt.junit.JUnitCore;
+import org.eclipse.jdt.junit.TestRunListener;
+import org.eclipse.jdt.junit.model.ITestElement.FailureTrace;
+import org.eclipse.jdt.junit.model.ITestElement.ProgressState;
+import org.eclipse.jdt.junit.model.ITestElement.Result;
+import org.eclipse.jdt.testplugin.JavaProjectHelper;
+
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+
+import org.eclipse.jdt.internal.junit.launcher.TestKindRegistry;
+
+public class TestRunListenerTest4 extends AbstractTestRunListenerTest {
+
+ private String[] runSequenceTest(IType typeToLaunch) throws Exception {
+ TestRunLog log= new TestRunLog();
+ final TestRunListener testRunListener= new TestRunListeners.SequenceTest(log);
+ JUnitCore.addTestRunListener(testRunListener);
+ try {
+ return launchJUnit(typeToLaunch, log);
+ } finally {
+ JUnitCore.removeTestRunListener(testRunListener);
+ }
+ }
+
+ private String[] runTreeTest(IType typeToLaunch, int step) throws Exception {
+ TestRunLog log= new TestRunLog();
+ final TestRunListener testRunListener= new TestRunListeners.TreeTest(log, step);
+ JUnitCore.addTestRunListener(testRunListener);
+ try {
+ return launchJUnit(typeToLaunch, TestKindRegistry.JUNIT4_TEST_KIND_ID, log);
+ } finally {
+ JUnitCore.removeTestRunListener(testRunListener);
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ fProject= JavaProjectHelper.createJavaProject("TestRunListenerTest", "bin");
+ JavaProjectHelper.addToClasspath(fProject, JavaCore.newContainerEntry(JUnitCore.JUNIT4_CONTAINER_PATH));
+ JavaProjectHelper.addRTJar15(fProject);
+ }
+
+ public void testOK() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "public class ATestCase {\n" +
+ " @Test public void testSucceed() { }\n" +
+ "}";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedSequence= new String[] {
+ "sessionStarted-" + TestRunListeners.sessionAsString("ATestCase", ProgressState.RUNNING, Result.UNDEFINED, 0),
+ "testCaseStarted-" + TestRunListeners.testCaseAsString("testSucceed", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 0),
+ "testCaseFinished-" + TestRunListeners.testCaseAsString("testSucceed", "pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 0),
+ "sessionFinished-" + TestRunListeners.sessionAsString("ATestCase", ProgressState.COMPLETED, Result.OK, 0)
+ };
+ String[] actual= runSequenceTest(aTestCase);
+ assertEqualLog(expectedSequence, actual);
+ }
+
+ public void testTreeOK() throws Exception {
+ String source=
+ "package pack;\n"+
+ "\n"+
+ "import java.util.Arrays;\n"+
+ "\n"+
+ "import org.junit.Assert;\n"+
+ "import org.junit.Test;\n"+
+ "import org.junit.runner.RunWith;\n"+
+ "import org.junit.runners.Parameterized;\n"+
+ "import org.junit.runners.Parameterized.Parameter;\n"+
+ "import org.junit.runners.Parameterized.Parameters;\n"+
+ "\n" +
+ "@RunWith(Parameterized.class)\n"+
+ "public class ATestCase {\n"+
+ "\n"+
+ " @Parameters\n"+
+ " public static Iterable<Object[]> data() {\n"+
+ " return Arrays.asList(new Object[][] { { 2 }, { 4 } });\n"+
+ " }\n"+
+ "\n"+
+ " @Parameter\n"+
+ " public int param;\n"+
+ "\n"+
+ " @Test\n"+
+ " public void testEven() {\n"+
+ " Assert.assertEquals(0, param % 2);\n"+
+ " }\n"+
+ "}\n";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedSequence= new String[] {
+ TestRunListeners.sessionAsString("ATestCase", ProgressState.COMPLETED, Result.OK, 0),
+ TestRunListeners.suiteAsString("pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 1),
+ TestRunListeners.suiteAsString("[0]", ProgressState.COMPLETED, Result.OK, null, 2),
+ TestRunListeners.testCaseAsString("testEven[0]", "pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 3),
+ TestRunListeners.suiteAsString("[1]", ProgressState.COMPLETED, Result.OK, null, 2),
+ TestRunListeners.testCaseAsString("testEven[1]", "pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 3),
+ };
+ String[] actual= runTreeTest(aTestCase, 6);
+ assertEqualLog(expectedSequence, actual);
+ }
+
+ public void testFail() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "import static org.junit.Assert.*;\n"+
+ "public class ATestCase {\n" +
+ " @Test public void testFail() { fail(); }\n" +
+ "}";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedSequence= new String[] {
+ "sessionStarted-" + TestRunListeners.sessionAsString("ATestCase", ProgressState.RUNNING, Result.UNDEFINED, 0),
+ "testCaseStarted-" + TestRunListeners.testCaseAsString("testFail", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 0),
+ "testCaseFinished-" + TestRunListeners.testCaseAsString("testFail", "pack.ATestCase", ProgressState.COMPLETED, Result.FAILURE, new FailureTrace("java.lang.AssertionError", null, null), 0),
+ "sessionFinished-" + TestRunListeners.sessionAsString("ATestCase", ProgressState.COMPLETED, Result.FAILURE, 0)
+ };
+ String[] actual= runSequenceTest(aTestCase);
+ assertEqualLog(expectedSequence, actual);
+ }
+
+ public void testSimpleTest() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "import org.junit.FixMethodOrder;\n"+
+ "import org.junit.runners.MethodSorters;\n"+
+ "import static org.junit.Assert.*;\n"+
+ "\n" +
+ "@FixMethodOrder(MethodSorters.NAME_ASCENDING)\n" +
+ "public class ATestCase {\n" +
+ " protected int fValue1;\n" +
+ " protected int fValue2;\n" +
+ "\n" +
+ " protected void setUp() {\n" +
+ " fValue1= 2;\n" +
+ " fValue2= 3;\n" +
+ " }\n" +
+ " @Test public void testAdd() {\n" +
+ " double result= fValue1 + fValue2;\n" +
+ " // forced failure result == 5\n" +
+ " assertTrue(result == 6);\n" +
+ " }\n" +
+ " @Test public void testDivideByZero() {\n" +
+ " int zero= 0;\n" +
+ " int result= 8/zero;\n" +
+ " }\n" +
+ " @Test public void testEquals() {\n" +
+ " assertEquals(12, 12);\n" +
+ " assertEquals(12L, 12L);\n" +
+ " assertEquals(new Long(12), new Long(12));\n" +
+ "\n" +
+ " assertEquals(\"Size\", String.valueOf(12), String.valueOf(13));\n" +
+ " }\n" +
+ "}";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedSequence= new String[] {
+ "sessionStarted-" + TestRunListeners.sessionAsString("ATestCase", ProgressState.RUNNING, Result.UNDEFINED, 0),
+ "testCaseStarted-" + TestRunListeners.testCaseAsString("testAdd", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 0),
+ "testCaseFinished-" + TestRunListeners.testCaseAsString("testAdd", "pack.ATestCase", ProgressState.COMPLETED, Result.FAILURE, new FailureTrace("java.lang.AssertionError", null, null), 0),
+ "testCaseStarted-" + TestRunListeners.testCaseAsString("testDivideByZero", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 0),
+ "testCaseFinished-" + TestRunListeners.testCaseAsString("testDivideByZero", "pack.ATestCase", ProgressState.COMPLETED, Result.ERROR, new FailureTrace("java.lang.ArithmeticException", null, null), 0),
+ "testCaseStarted-" + TestRunListeners.testCaseAsString("testEquals", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 0),
+ "testCaseFinished-" + TestRunListeners.testCaseAsString("testEquals", "pack.ATestCase", ProgressState.COMPLETED, Result.FAILURE, new FailureTrace("org.junit.ComparisonFailure", "12", "13"), 0),
+ "sessionFinished-" + TestRunListeners.sessionAsString("ATestCase", ProgressState.COMPLETED, Result.ERROR, 0)
+ };
+ String[] actual= runSequenceTest(aTestCase);
+ assertEqualLog(expectedSequence, actual);
+ }
+
+
+ public void testTreeOnSessionStarted() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "public class ATestCase {\n" +
+ " @Test public void testSucceed() { }\n" +
+ "}";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedTree= new String[] {
+ TestRunListeners.sessionAsString("ATestCase", ProgressState.RUNNING, Result.UNDEFINED, 0),
+ TestRunListeners.suiteAsString("pack.ATestCase", ProgressState.NOT_STARTED, Result.UNDEFINED, null, 1),
+ TestRunListeners.testCaseAsString("testSucceed", "pack.ATestCase", ProgressState.NOT_STARTED, Result.UNDEFINED, null, 2),
+ };
+ String[] actual= runTreeTest(aTestCase, 1);
+ assertEqualLog(expectedTree, actual);
+ }
+
+ public void testTreeOnSessionEnded() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "import static org.junit.Assert.*;\n"+
+ "public class ATestCase {\n" +
+ " @Test public void testFail() { fail(); }\n" +
+ "}";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedTree= new String[] {
+ TestRunListeners.sessionAsString("ATestCase", ProgressState.COMPLETED, Result.FAILURE, 0),
+ TestRunListeners.suiteAsString("pack.ATestCase", ProgressState.COMPLETED, Result.FAILURE, null, 1),
+ TestRunListeners.testCaseAsString("testFail", "pack.ATestCase", ProgressState.COMPLETED, Result.FAILURE, new FailureTrace("java.lang.AssertionError", null, null), 2),
+ };
+ String[] actual= runTreeTest(aTestCase, 4);
+ assertEqualLog(expectedTree, actual);
+ }
+
+ public void testTreeOnSecondTestStarted() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "import org.junit.FixMethodOrder;\n"+
+ "import org.junit.runners.MethodSorters;\n"+
+ "import static org.junit.Assert.*;\n"+
+ "\n" +
+ "@FixMethodOrder(MethodSorters.NAME_ASCENDING)\n" +
+ "public class ATestCase {\n" +
+ " @Test public void test1Succeed() { }\n" +
+ " @Test public void test2Fail() { fail(); }\n" +
+ "}";
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedTree= new String[] {
+ TestRunListeners.sessionAsString("ATestCase", ProgressState.RUNNING, Result.UNDEFINED, 0),
+ TestRunListeners.suiteAsString("pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 1),
+ TestRunListeners.testCaseAsString("test1Succeed", "pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 2),
+ TestRunListeners.testCaseAsString("test2Fail", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 2),
+ };
+ String[] actual= runTreeTest(aTestCase, 4);
+ assertEqualLog(expectedTree, actual);
+ }
+
+ public void testTreeOnSecondTestStarted2() throws Exception {
+ String source=
+ "package pack;\n" +
+ "import org.junit.Test;\n"+
+ "import org.junit.FixMethodOrder;\n"+
+ "import org.junit.runners.MethodSorters;\n"+
+ "import static org.junit.Assert.*;\n"+
+ "\n" +
+ "@FixMethodOrder(MethodSorters.NAME_ASCENDING)\n" +
+ "public class ATestCase {\n" +
+ " @Test public void test2Succeed() { }\n" +
+ " @Test public void test1Fail() { fail(); }\n" +
+ "}";
+
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedTree= new String[] {
+ TestRunListeners.sessionAsString("ATestCase", ProgressState.RUNNING, Result.FAILURE, 0),
+ TestRunListeners.suiteAsString("pack.ATestCase", ProgressState.RUNNING, Result.FAILURE, null, 1),
+ TestRunListeners.testCaseAsString("test1Fail", "pack.ATestCase", ProgressState.COMPLETED, Result.FAILURE, new FailureTrace("java.lang.AssertionError", null, null), 2),
+ TestRunListeners.testCaseAsString("test2Succeed", "pack.ATestCase", ProgressState.RUNNING, Result.UNDEFINED, null, 2),
+ };
+ String[] actual= runTreeTest(aTestCase, 4);
+ assertEqualLog(expectedTree, actual);
+ }
+}

Back to the top