package junitparams.custom; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import org.junit.Test; import org.junit.runner.RunWith; import junitparams.JUnitParamsRunner; import static org.assertj.core.api.Assertions.*; @RunWith(JUnitParamsRunner.class) public class CustomParametersProviderTest { @Test @CustomParameters(provider = SimpleHelloProvider.class) public void runWithParametersFromCustomProvider(String param) { assertThat(param).isEqualTo("hello"); } @Test @HelloParameters(hello = "Hi") public void runWithParametersFromCustomAnnotation(String param) { assertThat(param).isEqualTo("Hi"); } @Retention(RetentionPolicy.RUNTIME) @CustomParameters(provider = CustomHelloProvider.class) public @interface HelloParameters { String hello(); } public static class SimpleHelloProvider implements ParametersProvider<CustomParameters> { @Override public void initialize(CustomParameters parametersAnnotation) { } @Override public Object[] getParameters() { return new Object[]{"hello", "hello"}; } } public static class CustomHelloProvider implements ParametersProvider<HelloParameters> { private String hello; @Override public void initialize(HelloParameters parametersAnnotation) { hello = parametersAnnotation.hello(); } @Override public Object[] getParameters() { return new Object[]{hello, hello}; } } }