diff --git a/testing/pom.xml b/testing/pom.xml
index 72ec2b2f0c..8f5c6ddb3d 100644
--- a/testing/pom.xml
+++ b/testing/pom.xml
@@ -86,6 +86,12 @@
jgotesting
${jgotesting.version}
test
+
+
+ org.jukito
+ jukito
+ 1.5
+ test
diff --git a/testing/src/main/java/com/baeldung/introductionjukito/Calculator.java b/testing/src/main/java/com/baeldung/introductionjukito/Calculator.java
new file mode 100644
index 0000000000..fd75e1bd9e
--- /dev/null
+++ b/testing/src/main/java/com/baeldung/introductionjukito/Calculator.java
@@ -0,0 +1,7 @@
+package com.baeldung.introductionjukito;
+
+public interface Calculator {
+
+ public double add(double a, double b);
+
+}
diff --git a/testing/src/main/java/com/baeldung/introductionjukito/ScientificCalculator.java b/testing/src/main/java/com/baeldung/introductionjukito/ScientificCalculator.java
new file mode 100644
index 0000000000..2501569afc
--- /dev/null
+++ b/testing/src/main/java/com/baeldung/introductionjukito/ScientificCalculator.java
@@ -0,0 +1,5 @@
+package com.baeldung.introductionjukito;
+
+public class ScientificCalculator extends SimpleCalculator {
+
+}
diff --git a/testing/src/main/java/com/baeldung/introductionjukito/SimpleCalculator.java b/testing/src/main/java/com/baeldung/introductionjukito/SimpleCalculator.java
new file mode 100644
index 0000000000..933baa3cd0
--- /dev/null
+++ b/testing/src/main/java/com/baeldung/introductionjukito/SimpleCalculator.java
@@ -0,0 +1,10 @@
+package com.baeldung.introductionjukito;
+
+public class SimpleCalculator implements Calculator {
+
+ @Override
+ public double add(double a, double b) {
+ return a+b;
+ }
+
+}
diff --git a/testing/src/test/java/com/baeldung/introductionjukito/CalculatorTest.java b/testing/src/test/java/com/baeldung/introductionjukito/CalculatorTest.java
new file mode 100644
index 0000000000..313e1d2938
--- /dev/null
+++ b/testing/src/test/java/com/baeldung/introductionjukito/CalculatorTest.java
@@ -0,0 +1,62 @@
+package com.baeldung.introductionjukito;
+
+import org.jukito.All;
+import org.jukito.JukitoModule;
+import org.jukito.JukitoRunner;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import static org.junit.Assert.*;
+
+@RunWith(JukitoRunner.class)
+public class CalculatorTest {
+
+ public static class Module extends JukitoModule {
+
+ @Override
+ protected void configureTest() {
+ bindMany(Calculator.class, SimpleCalculator.class,
+ ScientificCalculator.class);
+ bindManyInstances(AdditionTest.class, new AdditionTest(1, 1, 2),
+ new AdditionTest(10, 10, 20),
+ new AdditionTest(18, 24, 42));
+ bindManyNamedInstances(Integer.class, "even", 2, 4, 6);
+ bindManyNamedInstances(Integer.class, "odd", 1, 3, 5);
+ }
+ }
+
+ public static class AdditionTest {
+
+ int a;
+ int b;
+ int expected;
+
+ public AdditionTest(int a, int b, int expected) {
+ this.a = a;
+ this.b = b;
+ this.expected = expected;
+ }
+ }
+
+ @Test
+ public void givenTwoNumbers_WhenAdd_ThenSumBoth(@All Calculator calc) {
+ double result = calc.add(1, 1);
+ assertEquals(2, result, .1);
+ }
+
+ @Test
+ public void givenTwoNumbers_WhenAdd_ThenSumBoth(@All Calculator calc,
+ @All AdditionTest addTest) {
+ double result = calc.add(addTest.a, addTest.b);
+ assertEquals(addTest.expected, result, .1);
+ }
+
+ @Test
+ public void givenEvenNumbers_whenPrint_thenOutput(@All("even") Integer i) {
+ System.out.println("even " + i);
+ }
+
+ @Test
+ public void givenOddNumbers_whenPrint_thenOutput(@All("odd") Integer i) {
+ System.out.println("odd " + i);
+ }
+}