После обновления с 0.9.2 до 0.9.5 выдается ошибка «java .lang.IllegalArgumentException: Недопустимая ссылка на группу» - PullRequest
3 голосов
/ 20 марта 2020

Мой набор тестов работал нормально, пока он не использовал версию 0.9.2.

У меня есть тестовый бегун с KarateOptions для указания файлов объектов, которые должны быть выполнены

@KarateOptions(tags = {"~@ignore"},
    features = {
            "src/test/java/com/pro/api/tests/features/beforesuitescenarios/feature1.feature",
             "src/test/java/com/pro/api/tests/features/customerscenarios/feature2.feature",
            "src/test/java/com/pro/api/tests/features/servicerequestscenarios/feature3.feature",
            "src/test/java/com/pro/api/tests/features/invoicescenarios/feature4.feature",

    })

И тестовый бегун для этого использовал огуречный бегун,

  @Test
public void testAllFeatures() throws Exception { 
    String karateOutputPath = "target/surefire-reports";
    KarateStats stats = CucumberRunner.parallel(getClass(), 1, karateOutputPath);
    generateReport(karateOutputPath);
    assertTrue("There are scenario failures", stats.getFailCount() == 0);
}

Я попытался обновить фреймворк до 0.9.5 и изменил бегун, как это упоминалось в последних документах,

@Test
public void testAllFeatures() throws Exception {

    String karateOutputPath = "target/surefire-reports";
    Results stats = Runner.parallel(getClass(), 1, karateOutputPath);
    generateReport(karateOutputPath);
    assertTrue("There are scenario failures", stats.getFailCount() == 0);
}

Теперь, когда я выполняю этот пакет, тесты выполняются правильно. Но после завершения теста всех файлов объектов выдается ошибка для строки

Результаты stats = Runner.parallel (getClass (), 1, karateOutputPath);

Со следующим IllegalArgumentException,

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1,295.291 s <<< 
FAILURE! - in com.pro.api.tests.features.TestRunner
[ERROR] testAllFeatures(com.pro.api.tests.features.TestRunner)  Time elapsed: 1,295.22 s  
 <<< ERROR!
java.lang.IllegalArgumentException: Illegal group reference
at com.pro.api.tests.features.TestRunner.testAllFeatures(TestRunner.java:55)

Чего мне не хватает при вызове бегуна? Как исправить эту проблему?

Далее, когда я попытался добавить обработчик исключений для шага сбоя, я получил следующий журнал ошибок:

java.lang.IllegalArgumentException: Illegal group reference
at java.base/java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1068)
at java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:998)
at java.base/java.util.regex.Matcher.replaceFirst(Matcher.java:1408)
at java.base/java.lang.String.replaceFirst(String.java:2081)
at com.intuit.karate.core.Engine.saveTimelineHtml(Engine.java:500)
at com.intuit.karate.Runner.parallel(Runner.java:357)
at com.intuit.karate.Runner$Builder.parallel(Runner.java:181)
at com.pro.api.tests.features.TestRunner.testAllFeatures(TestRunner.java:56)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1,181.97 s <<< FAILURE! - in com.pro.api.tests.features.TestRunner
[ERROR] testAllFeatures(com.pro.api.tests.features.TestRunner)  Time elapsed: 1,181.905 s  <<< ERROR!
java.lang.NullPointerException
    at com.pro.api.tests.features.TestRunner.testAllFeatures(TestRunner.java:61)

Что-то в saveTimeline Html не удается

1 Ответ

1 голос
/ 20 марта 2020

Спасибо за подсказку - это действительно ошибка в коде отчета о временной шкале.

Ссылка на проблему: https://github.com/intuit/karate/issues/1085

Так что вам нужно дождаться следующей версии, или скоро должна появиться версия R C, чтобы вы могли попробовать ее.

...