diff --git a/pom.xml b/pom.xml
index 3f3fdc8..87f389a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,6 +83,12 @@
${version.slf4j}
jar
+
+ org.mockito
+ mockito-all
+ 1.9.5
+ test
+
diff --git a/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java b/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java
index 3851a89..263c200 100644
--- a/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java
+++ b/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java
@@ -6,16 +6,29 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class CucumberUtils {
+ private static final Logger LOG = LoggerFactory.getLogger(CucumberUtils.class);
+ private static final String DEFAULT_LANGUAGE = "en";
+
+ private CucumberUtils() {
+ }
+
public static Locale getLocale(Scenario scenario) {
List scenarioPaths = new ArrayList<>();
scenarioPaths.add(scenario.getUri());
MultiLoader multiLoader = new MultiLoader(ClassLoader.getSystemClassLoader());
- CucumberFeature load = CucumberFeature.load(multiLoader, scenarioPaths).get(0);
- String language = load.getGherkinFeature().getFeature().getLanguage();
+ String language = DEFAULT_LANGUAGE;
+ try {
+ CucumberFeature cucumberFeature = CucumberFeature.load(multiLoader, scenarioPaths).get(0);
+ language = cucumberFeature.getGherkinFeature().getFeature().getLanguage();
+ } catch (Exception e) {
+ LOG.warn("Error while reading feature with uri {}. Using default language {} as fallback", scenario.getUri(), DEFAULT_LANGUAGE, e);
+ }
return new Locale(language);
}
diff --git a/src/test/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtilsTest.java b/src/test/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtilsTest.java
new file mode 100644
index 0000000..27ce16a
--- /dev/null
+++ b/src/test/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtilsTest.java
@@ -0,0 +1,34 @@
+package ru.sbtqa.tag.qautils.cucumber;
+
+import cucumber.api.Scenario;
+import cucumber.runtime.ScenarioImpl;
+import java.util.Locale;
+import org.junit.Assert;
+import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class CucumberUtilsTest {
+
+ @Test
+ public void returnCorrectLanguageLocaleTest() {
+ Scenario scenario = mock(ScenarioImpl.class);
+ when(scenario.getUri()).thenReturn("src/test/resources/features/Correct.feature");
+ Locale expectedLocale = new Locale("ru");
+
+ Locale actualLocale = CucumberUtils.getLocale(scenario);
+
+ Assert.assertEquals(expectedLocale, actualLocale);
+ }
+
+ @Test
+ public void fallbackToDefaultLanguageTest() {
+ Scenario scenario = mock(ScenarioImpl.class);
+ when(scenario.getUri()).thenReturn("src/test/resources/features/Empty.feature");
+ Locale expectedLocale = new Locale("en");
+
+ Locale actualLocale = CucumberUtils.getLocale(scenario);
+
+ Assert.assertEquals(expectedLocale, actualLocale);
+ }
+}
diff --git a/src/test/resources/features/Correct.feature b/src/test/resources/features/Correct.feature
new file mode 100644
index 0000000..3649419
--- /dev/null
+++ b/src/test/resources/features/Correct.feature
@@ -0,0 +1,5 @@
+#language:ru
+Функционал: Тестовая фича
+
+ Сценарий: Тестовый сценарий
+ * открывается страница "Тестовая страница"
\ No newline at end of file
diff --git a/src/test/resources/features/Empty.feature b/src/test/resources/features/Empty.feature
new file mode 100644
index 0000000..4cef802
--- /dev/null
+++ b/src/test/resources/features/Empty.feature
@@ -0,0 +1,4 @@
+Функционал: Тестовая фича
+
+ Сценарий: Тестовый сценарий
+ * открывается страница "Тестовая страница"
\ No newline at end of file