【发布时间】:2018-08-01 23:17:20
【问题描述】:
当我们使用 cmd-mvn integration-test 时,我们的集成测试空手道脚本按预期工作。如果我们使用 clean 它会失败并出现以下错误,并且成功执行的测试不会再次执行。
下面给出的错误日志,当我们使用 cmd - mvn clean integration-test
[INFO] --- maven-failsafe-plugin:2.13:integration-test (default) @ formfill ---
[INFO] Failsafe report directory: D:\Baskaran\wvid-stash\formfill\target\failsafe-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.dnb.vici.formfill.it.FormFill_ITSuite
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.27 sec <<< FAILURE!
initializationError(com.dnb.vici.formfill.it.FormFill_ITSuite) Time elapsed: 0.008 sec <<< ERROR!
java.lang.NullPointerException: null
at com.intuit.karate.FileUtils.resolveIfClassPath(FileUtils.java:157)
at com.intuit.karate.cucumber.KarateFeature.<init>(KarateFeature.java:47)
at com.intuit.karate.cucumber.KarateFeature.loadFeatures(KarateFeature.java:62)
at com.intuit.karate.junit4.Karate.<init>(Karate.java:53)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
我们在 POM 中的配置如下供参考。
<!-- Following plugin executes the unit tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version><!--$NO-MVN-MAN-VER$ -->
</plugin>
<!-- Following plugin executes the integration tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.13</version><!--$NO-MVN-MAN-VER$ -->
<configuration>
<includes>
<include>**/FormFill_ITSuite.java</include>
</includes>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
【问题讨论】:
-
您是否查看了 FileUtils 的来源,第 157 行?看起来没有加载的资源有问题?也许你应该附加一个调试器?
-
谢谢@Keulej。我看了看,除了 logback 配置之外,我没有从资源文件夹中加载任何内容。每当项目再次导入并运行 mvn integration-test 时,它都会按预期工作。仅当我执行 mvn clean integration-test 时才出现问题。
-
@BaskaranK 这是哪个版本的空手道。很抱歉,这些信息不足以复制。我注意到您在 Windows 上,这可能是一个错误。尽量不使用集成测试 maven 生命周期,并坚持使用 JUnit 的空手道示例。否则,如果您希望我们解决此问题,您需要提交带有工作示例的问题。
-
@PeterThomas,感谢您的快速回复 :) 我尝试使用空手道作为仅使用 junit runner 的 Spring boot 应用程序的集成测试。我们使用junit进行了单元测试。我们的目的是在每次构建之后依次执行单元测试和集成测试。我将尝试尽快分享工作示例以复制相同的内容。
标签: karate