blob: 0896c1f3973d8a58d8fb149fc7b21e76cd79452a [file] [log] [blame]
package org.junit.runners.parameterized;
import static java.util.Collections.emptyList;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.junit.rules.ExpectedException.none;
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Collections;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.model.TestClass;
public class BlockJUnit4ClassRunnerWithParametersTest {
private static final List<Object> NO_PARAMETERS = emptyList();
@Rule
public final ExpectedException thrown = none();
@RunWith(Parameterized.class)
@DummyAnnotation
public static class ClassWithParameterizedAnnotation {
@Test
public void dummyTest() {
}
}
@Test
public void hasAllAnnotationsExceptRunWith() throws Exception {
TestWithParameters testWithParameters = new TestWithParameters(
"dummy name", new TestClass(
ClassWithParameterizedAnnotation.class), NO_PARAMETERS);
BlockJUnit4ClassRunnerWithParameters runner = new BlockJUnit4ClassRunnerWithParameters(
testWithParameters);
Annotation[] annotations = runner.getRunnerAnnotations();
assertEquals(1, annotations.length);
assertEquals(annotations[0].annotationType(), DummyAnnotation.class);
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
private static @interface DummyAnnotation {
}
@RunWith(Parameterized.class)
public static class ClassWithPrivateParameter {
@Parameterized.Parameter
private String parameter;
@Test
public void dummyTest() {
}
}
@Test
public void providesHelpfulMessageIfParameterFieldCannotBeSet()
throws Exception {
TestWithParameters testWithParameters = new TestWithParameters(
"dummy name",
new TestClass(ClassWithPrivateParameter.class),
Collections.<Object>singletonList("dummy parameter"));
BlockJUnit4ClassRunnerWithParameters runner = new BlockJUnit4ClassRunnerWithParameters(
testWithParameters);
thrown.expect(IllegalAccessException.class);
thrown.expectCause(instanceOf(IllegalAccessException.class));
thrown.expectMessage("Cannot set parameter 'parameter'. Ensure that the field 'parameter' is public.");
runner.createTest();
}
}