You
can combine multiple test classes in a suite.
Factorial.java
Fibonacci.java
ArithmeticTest.java
FactorialTest.java
How to combine
multiple classes in a suite?
By
using @SuiteClasses annotation, you can combine the test classes.
How to run the test
suite?
Annotate
the suit class with below annotation, and run the class as junit test.
@RunWith(Suite.class)
For
example, I created ArithmeticTestSuite by combining ArithmeticTest,
FactorialTest, FibonacciTest classes like below.
Find
the below working application.
Arithmetic.java
package com.sample.arithmetic; public class Arithmetic { public int divide(int a, int b) { if (b == 0) { throw new IllegalArgumentException("Division by zero is not supported"); } return a / b; } public int add(int a, int b) { return a +b; } public int sub(int a, int b) { return a-b; } }
Factorial.java
package com.sample.arithmetic; public class Factorial { public int factorial(int num) { if (num < 0) { throw new IllegalArgumentException("Factorial is not computed for negative numbers"); } int result = 1; for (int i = 2; i <= num; i++) { result *= i; } return result; } }
Fibonacci.java
package com.sample.arithmetic; public class Fibonacci { public int fibNumber(int n) { if (n < 0) throw new IllegalArgumentException("Can't calculate fiboaaci for negative numbers"); return fib(n); } private int fib(int n) { if (n == 1 || n == 0) return 1; return fib(n - 1) + fib(n - 2); } }
ArithmeticTest.java
package com.sample.arithmetic; import static org.junit.Assert.assertEquals; import org.junit.Test; /** * Test cases follow below naming convention. methodName_input_output format. * * @author krishna * */ public class ArithmeticTest { @Test public void divide_10By2_Five() { Arithmetic obj1 = new Arithmetic(); int actual = obj1.divide(10, 2); int expected = 5; assertEquals(expected, actual); } }
FactorialTest.java
package com.sample.arithmetic; import static org.junit.Assert.assertEquals; import org.junit.Test; /** * Test cases follow below naming convention. methodName_input_output format. * * @author krishna * */ public class FactorialTest { @Test public void factorial_5_120() { Factorial factorial = new Factorial(); int actual = factorial.factorial(5); int expected = 120; assertEquals(expected, actual); } }
FibonacciTest.java
package com.sample.arithmetic; import static org.junit.Assert.assertEquals; import org.junit.Test; /** * Test cases follow below naming convention. methodName_input_output format. * * @author krishna * */ public class FibonacciTest { @Test public void Fibonacci_7_21() { Fibonacci fib = new Fibonacci(); int actual = fib.fibNumber(7); int expected = 21; assertEquals(expected, actual); } }
ArithmeticTestSuite.java
package com.sample.arithmetic; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ ArithmeticTest.class, FactorialTest.class, FibonacciTest.class }) public class ArithmeticTestSuite { }
No comments:
Post a Comment