From eaba521fdf75fcfe56a6b26934788e0101f6641d Mon Sep 17 00:00:00 2001 From: alincojanu Date: Wed, 4 Oct 2017 21:08:28 +0300 Subject: [PATCH] runWith (#2691) --- .../java/com/baeldung/junit/Calculator.java | 11 +++++ .../java/com/baeldung/junit/AdditionTest.java | 14 +++++++ .../baeldung/junit/BlockingTestRunner.java | 18 ++++++++ .../com/baeldung/junit/CalculatorTest.java | 17 ++++++++ .../com/baeldung/junit/SubstractionTest.java | 14 +++++++ .../java/com/baeldung/junit/SuiteTest.java | 12 ++++++ .../java/com/baeldung/junit/TestRunner.java | 41 +++++++++++++++++++ 7 files changed, 127 insertions(+) create mode 100644 testing/src/main/java/com/baeldung/junit/Calculator.java create mode 100644 testing/src/test/java/com/baeldung/junit/AdditionTest.java create mode 100644 testing/src/test/java/com/baeldung/junit/BlockingTestRunner.java create mode 100644 testing/src/test/java/com/baeldung/junit/CalculatorTest.java create mode 100644 testing/src/test/java/com/baeldung/junit/SubstractionTest.java create mode 100644 testing/src/test/java/com/baeldung/junit/SuiteTest.java create mode 100644 testing/src/test/java/com/baeldung/junit/TestRunner.java diff --git a/testing/src/main/java/com/baeldung/junit/Calculator.java b/testing/src/main/java/com/baeldung/junit/Calculator.java new file mode 100644 index 0000000000..8ea7b3ed1f --- /dev/null +++ b/testing/src/main/java/com/baeldung/junit/Calculator.java @@ -0,0 +1,11 @@ +package com.baeldung.junit; + +public class Calculator { + public int add(int a, int b) { + return a + b; + } + + public int sub(int a, int b) { + return a - b; + } +} diff --git a/testing/src/test/java/com/baeldung/junit/AdditionTest.java b/testing/src/test/java/com/baeldung/junit/AdditionTest.java new file mode 100644 index 0000000000..0d492f8058 --- /dev/null +++ b/testing/src/test/java/com/baeldung/junit/AdditionTest.java @@ -0,0 +1,14 @@ +package com.baeldung.junit; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class AdditionTest { + Calculator calculator = new Calculator(); + + @Test + public void testAddition() { + assertEquals("addition", 8, calculator.add(5, 3)); + } +} diff --git a/testing/src/test/java/com/baeldung/junit/BlockingTestRunner.java b/testing/src/test/java/com/baeldung/junit/BlockingTestRunner.java new file mode 100644 index 0000000000..432d5cda83 --- /dev/null +++ b/testing/src/test/java/com/baeldung/junit/BlockingTestRunner.java @@ -0,0 +1,18 @@ +package com.baeldung.junit; + +import org.junit.runners.BlockJUnit4ClassRunner; +import org.junit.runners.model.FrameworkMethod; +import org.junit.runners.model.InitializationError; +import org.junit.runners.model.Statement; + +public class BlockingTestRunner extends BlockJUnit4ClassRunner { + public BlockingTestRunner(Class klass) throws InitializationError { + super(klass); + } + + @Override + protected Statement methodInvoker(FrameworkMethod method, Object test) { + System.out.println("invoking: " + method.getName()); + return super.methodInvoker(method, test); + } +} diff --git a/testing/src/test/java/com/baeldung/junit/CalculatorTest.java b/testing/src/test/java/com/baeldung/junit/CalculatorTest.java new file mode 100644 index 0000000000..d1b35d1442 --- /dev/null +++ b/testing/src/test/java/com/baeldung/junit/CalculatorTest.java @@ -0,0 +1,17 @@ +package com.baeldung.junit; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import static org.junit.Assert.assertEquals; + +@RunWith(JUnit4.class) +public class CalculatorTest { + Calculator calculator = new Calculator(); + + @Test + public void testAddition() { + assertEquals("addition", 8, calculator.add(5, 3)); + } +} diff --git a/testing/src/test/java/com/baeldung/junit/SubstractionTest.java b/testing/src/test/java/com/baeldung/junit/SubstractionTest.java new file mode 100644 index 0000000000..9650d83afe --- /dev/null +++ b/testing/src/test/java/com/baeldung/junit/SubstractionTest.java @@ -0,0 +1,14 @@ +package com.baeldung.junit; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class SubstractionTest { + Calculator calculator = new Calculator(); + + @Test + public void substraction() { + assertEquals("substraction", 2, calculator.sub(5, 3)); + } +} diff --git a/testing/src/test/java/com/baeldung/junit/SuiteTest.java b/testing/src/test/java/com/baeldung/junit/SuiteTest.java new file mode 100644 index 0000000000..428319e72e --- /dev/null +++ b/testing/src/test/java/com/baeldung/junit/SuiteTest.java @@ -0,0 +1,12 @@ +package com.baeldung.junit; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ + AdditionTest.class, + SubstractionTest.class}) +public class SuiteTest { +} diff --git a/testing/src/test/java/com/baeldung/junit/TestRunner.java b/testing/src/test/java/com/baeldung/junit/TestRunner.java new file mode 100644 index 0000000000..9eb4b3141b --- /dev/null +++ b/testing/src/test/java/com/baeldung/junit/TestRunner.java @@ -0,0 +1,41 @@ +package com.baeldung.junit; + +import org.junit.Test; +import org.junit.runner.Description; +import org.junit.runner.Runner; +import org.junit.runner.notification.RunNotifier; + +import java.lang.reflect.Method; + +public class TestRunner extends Runner { + + private Class testClass; + public TestRunner(Class testClass) { + super(); + this.testClass = testClass; + } + + @Override + public Description getDescription() { + return Description.createTestDescription(testClass, "My runner description"); + } + + @Override + public void run(RunNotifier notifier) { + System.out.println("running the tests from MyRunner: " + testClass); + try { + Object testObject = testClass.newInstance(); + for (Method method : testClass.getMethods()) { + if (method.isAnnotationPresent(Test.class)) { + notifier.fireTestStarted(Description + .createTestDescription(testClass, method.getName())); + method.invoke(testObject); + notifier.fireTestFinished(Description + .createTestDescription(testClass, method.getName())); + } + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } +}