Parameterized testing
-
Separate both test parameters and expected values from code.
-
Provide parameter values either by variables or by separate CSV files.
-
Read Parameterized Classes and Tests for details.
Figure 337. CSV parameter testing
| Hard-coded | public void testPrimes() { Assertions.assertEquals(false, Prime.isPrime(1)); Assertions.assertEquals(true, Prime.isPrime(2)); Assertions.assertEquals(true, Prime.isPrime(3)); Assertions.assertEquals(false, Prime.isPrime(4));} |
|---|---|
| Parameterized | @ParameterizedTest @CsvSource( textBlock = """ false, 1 true, 2 true, 3 false, 4""") public void testPrimes(boolean expected, int primeCandidate) { Assertions.assertEquals(expected, Prime.isPrime(primeCandidate)); } |
Figure 338. CSV parameter testing results
mvn test ─ de.hdm_stuttgart.mi.sd1.PrimeTest - 0.098 s
├─ ✔ testPrimes(int, boolean)[1] 1, false - 0.035 s
├─ ✔ testPrimes(int, boolean)[2] 2, true - 0.001 s
├─ ✔ testPrimes(int, boolean)[3] 3, true - 0.001 s
└─ ✔ testPrimes(int, boolean)[4] 4, false - 0.001 sFigure 339. CSV parameter file based testing
@ParameterizedTest @CsvFileSource(resources = "/primes.csv") public void testPrimesByFile (boolean expected, int primeCandidate, ) { Assertions.assertEquals( expected ,Prime.isPrime(primeCandidate) ); } |
File test/resources/primes.csv: false, 1 true, 2 true, 3 false, 4 |
mvn test ─ de.hdm_stuttgart.mi.sd1.PrimeTest - 0.098 s
├─ ✔ testPrimesByFile(int, boolean)[1] false, 1 - 0.031 s
├─ ✔ testPrimesByFile(int, boolean)[2] true, 2 - 0.001 s
├─ ✔ testPrimesByFile(int, boolean)[3] true, 3 - 0.001 s
└─ ✔ testPrimesByFile(int, boolean)[4] false, 4 - 0.001 s