Package org.junit.tests

Source Code of org.junit.tests.ParameterizedTestTest

package org.junit.tests;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

import junit.framework.JUnit4TestAdapter;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runner.JUnitCore;
import org.junit.runner.Request;
import org.junit.runner.Result;
import org.junit.runner.RunWith;
import org.junit.runner.Runner;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

public class ParameterizedTestTest {
  @RunWith(Parameterized.class)
  static public class FibonacciTest {
    @Parameters
    public static Collection<Object[]> data() {
      return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 },
          { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } });
    }

    private int fInput;

    private int fExpected;

    public FibonacciTest(int input, int expected) {
      fInput= input;
      fExpected= expected;
    }

    @Test
    public void test() {
      assertEquals(fExpected, fib(fInput));
    }

    private int fib(int x) {
      return 0;
    }
  }

  @Test
  public void count() {
    Result result= JUnitCore.runClasses(FibonacciTest.class);
    assertEquals(7, result.getRunCount());
    assertEquals(6, result.getFailureCount());
  }

  @Test
  public void failuresNamedCorrectly() {
    Result result= JUnitCore.runClasses(FibonacciTest.class);
    assertEquals(
        String.format("test[1](%s)", FibonacciTest.class.getName()),
        result.getFailures().get(0).getTestHeader());
  }

  @Test
  public void countBeforeRun() throws Exception {
    Runner runner= Request.aClass(FibonacciTest.class).getRunner();
    assertEquals(7, runner.testCount());
  }

  @Test
  public void plansNamedCorrectly() throws Exception {
    Runner runner= Request.aClass(FibonacciTest.class).getRunner();
    Description description= runner.getDescription();
    assertEquals("[0]", description.getChildren().get(0).getDisplayName());
  }

  private static String fLog;

  @RunWith(Parameterized.class)
  static public class BeforeAndAfter {
    @BeforeClass
    public static void before() {
      fLog+= "before ";
    }
    @AfterClass
    public static void after() {
      fLog+= "after ";
    }

    @Parameters
    public static Collection<Object[]> data() {
      return Collections.emptyList();
    }
  }

  @Test
  public void beforeAndAfterClassAreRun() {
    fLog= "";
    JUnitCore.runClasses(BeforeAndAfter.class);
    assertEquals("before after ", fLog);
  }

  @RunWith(Parameterized.class)
  static public class EmptyTest {
    @BeforeClass
    public static void before() {
      fLog+= "before ";
    }

    @AfterClass
    public static void after() {
      fLog+= "after ";
    }
  }

  @Test
  public void validateClassCatchesNoParameters() {
    Result result= JUnitCore.runClasses(EmptyTest.class);
    assertEquals(1, result.getFailureCount());
  }

  @RunWith(Parameterized.class)
  static public class IncorrectTest {
    @Test
    public int test() {
      return 0;
    }

    @Parameters
    public static Collection<Object[]> data() {
      return Parameterized.eachOne(1);
    }
  }

  @Test
  public void failuresAddedForBadTestMethod() throws Exception {
    Result result= JUnitCore.runClasses(IncorrectTest.class);
    assertEquals(1, result.getFailureCount());
  }

  @RunWith(Parameterized.class)
  static public class ProtectedParametersTest {
    @Parameters
    protected static Collection<Object[]> data() {
      return Collections.emptyList();
    }
  }

  @Test
  public void meaningfulFailureWhenParametersNotPublic() throws Exception {
    Result result= JUnitCore.runClasses(ProtectedParametersTest.class);
    String expected= String.format(
        "No public static parameters method on class %s",
        ProtectedParametersTest.class.getName());
    assertEquals(expected, result.getFailures().get(0).getMessage());
  }

  @RunWith(Parameterized.class)
  static public class WrongElementType {
    @Parameters
    public static Collection<String> data() {
      return Arrays.asList("a", "b", "c");
    }
  }
 
  @Test public void meaningfulFailureWhenParameterListsAreNotArrays() {
    Result result= JUnitCore.runClasses(WrongElementType.class);
    String expected= String.format("%s.data() must return a Collection of arrays.", WrongElementType.class.getName());
    assertEquals(expected, result.getFailures().get(0).getMessage());
  }
 
  static public junit.framework.Test suite() {
    return new JUnit4TestAdapter(ParameterizedTestTest.class);
  }
}
TOP

Related Classes of org.junit.tests.ParameterizedTestTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.