Skip to content

The main goal of this project is to compare parametrized tests in JUnit4 and JUnit5.

Notifications You must be signed in to change notification settings

mtumilowicz/junit-parameterized-tests

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7d72a64 · Aug 23, 2018

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

junit-parameterized-tests

The main goal of this project is to compare parametrized tests in JUnit4 and JUnit5.

Reference: https://github.com/junit-team/junit4/wiki/parameterized-tests
Reference: https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests

manual

JUnit 4

  • build.gradle

    testCompile group: 'junit', name: 'junit', version: '4.12'
    
  • parametrized test

    1. method
      @Test
      public void add() {
          assertEquals(expectedSum, Calculator.add(a, b));
      }    
      
    2. constructor of a test class + fields (matching parameters)
      private int a;
      private int b;
      private int expectedSum;
      
      public CalculatorTest(int a, int b, int expectedSum) {
          this.a = a;
          this.b = b;
          this.expectedSum = expectedSum;
      }    
      
    3. data supplier
      @Parameters(name = "{index}: sum({0} + {1})={2}")
      public static Iterable<Object[]> data() {
          return Arrays.asList(new Object[][] {
                  { 0, 0, 0 }, 
                  { 1, 1, 2 }, 
                  { 2, 1, 3 }, 
                  { 1, 3, 4 }, 
                  { -4, 4, 0 }, 
                  { -5, -5, -10 }, 
                  { -3, 6, 3 }
          });
      }    
      
      where:
      @Parameters(name = "{index}: sum({0} + {1})={2}")
      
      is a label for test cases:
      [0:sum(0+0)=0]
          add[0:sum(0+0)=0]
      [1:sum(1+1)=2]
          add[1:sum(1+1)=2]
      [2:sum(2+1)=3]
          add[2:sum(2+1)=3]
      

Junit 5

  • build.gradle

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.2.0'    
    
  • parametrized test

    1. method
      @DisplayName("Test of add method")
      @ParameterizedTest(name = "{index} ==> {0} + {1} = {2}")
      @MethodSource
      void add(int a, int b, int expectedSum) {
          assertEquals(expectedSum, Calculator.add(a, b));
      }    
      
    2. data supplier
      static Stream<Arguments> add() {
              return Stream.of(
                      Arguments.of(0, 0, 0),
                      Arguments.of(1, 1, 2),
                      Arguments.of(2, 1, 3),
                      Arguments.of(1, 3, 4),
                      Arguments.of(-4, 4, 0),
                      Arguments.of(-5, -5, -10),
                      Arguments.of(-3, 6, 3)
              );
          }
      
      Remark: default name for supplier method is same as tested method

About

The main goal of this project is to compare parametrized tests in JUnit4 and JUnit5.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages