diff --git a/testng/src/main/java/io/cucumber/testng/TestNGCucumberOptionsProvider.java b/testng/src/main/java/io/cucumber/testng/TestNGCucumberOptionsProvider.java index 8156721c24..9be3f035a1 100644 --- a/testng/src/main/java/io/cucumber/testng/TestNGCucumberOptionsProvider.java +++ b/testng/src/main/java/io/cucumber/testng/TestNGCucumberOptionsProvider.java @@ -1,18 +1,36 @@ package io.cucumber.testng; import io.cucumber.core.backend.ObjectFactory; +import io.cucumber.core.logging.Logger; +import io.cucumber.core.logging.LoggerFactory; import io.cucumber.core.options.CucumberOptionsAnnotationParser; import io.cucumber.core.snippets.SnippetType; +import java.lang.annotation.Annotation; + final class TestNGCucumberOptionsProvider implements CucumberOptionsAnnotationParser.OptionsProvider { + private static final Logger log = LoggerFactory.getLogger(TestNGCucumberOptionsProvider.class); + @Override public CucumberOptionsAnnotationParser.CucumberOptions getOptions(Class clazz) { CucumberOptions annotation = clazz.getAnnotation(CucumberOptions.class); - if (annotation == null) { - return null; + if (annotation != null) { + return new TestNGCucumberOptions(annotation); + } + warnWhenJUnitCucumberOptionsAreUsed(clazz); + return null; + } + + private static void warnWhenJUnitCucumberOptionsAreUsed(Class clazz) { + for (Annotation clazzAnnotation : clazz.getAnnotations()) { + String name = clazzAnnotation.annotationType().getName(); + if ("io.cucumber.junit.CucumberOptions".equals(name)) { + log.warn(() -> "Ignoring options provided by " + name + " on " + clazz.getName() + ". " + + "It is recommend to use separate runner classes for JUnit and TestNG." + ); + } } - return new TestNGCucumberOptions(annotation); } private static class TestNGCucumberOptions implements CucumberOptionsAnnotationParser.CucumberOptions {