2016-11-13 31 views
2

摘要:春季启动黄瓜测试可以在“MVN测试”运行,但不是在“MVN验证”

我正在用黄瓜克服弹簧启动应用程序的一些测试。当我使用“mvn test”执行它们时,My Cucumber测试运行良好,但在“mvn verify”生命周期中执行它们时失败。

详情:

我的黄瓜亚军类看起来是这样的:

@RunWith(Cucumber.class) 
@CucumberOptions(
     features = {"src/test/resources/features/creditCardSummary.feature"}, 
     glue = {"th.co.scb.fasteasy.step"}, 
     plugin = { 
       "pretty", 
       "json:target/cucumber-json-report.json" 
       } 
) 

public class CreditCardRunnerTest { 

} 
当我执行“MVN测试”,我可以在黄瓜亚军被行家之前实例化的日志中看到

Spring启动插件实例化Spring Boot实例:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running CreditCardRunnerTest 
@creditcards 
Feature: POST /creditcards/summary 
    As a user, I would like to get basic information, balance and/or last 'n' transactions of a given list of credit cards, so that I can provide the information for further operations. 

........... 

2016-11-13 07:29:02.704 INFO 14716 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8090 (http) 
2016-11-13 07:29:02.721 INFO 14716 --- [   main] t.c.s.fasteasy.step.CreditCardStepdefs : Started CreditCardStepdefs in 13.486 seconds (JVM running for 16.661) 

我知道我的黄瓜测试实际上是一个tegration试验所以移动它为“MVN验证”生命周期阶段的一部分来运行,而不是通过它重命名为CucumberRunnerIT.java和配置的pom.xml如下:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>pre-integration-test</id> 
        <goals> 
         <goal>start</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>post-integration-test</id> 
        <goals> 
         <goal>stop</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <configuration> 
       <argLine>${surefireArgLine}</argLine> 
       <excludes> 
        <exclude>**/IT.java</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.19.1</version> 
      <executions> 
       <execution> 
        <id>integration-tests</id> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
        <configuration> 
         <argLine>${failsafeArgLine}</argLine> 
         <skipTests>${skip.integration.tests}</skipTests> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

当我运行它的一部分“验证”不过,我得到以下错误:

2016-11-13 07:39:42.921 INFO 12244 --- [lication.main()] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0 
2016-11-13 07:39:43.094 INFO 12244 --- [lication.main()] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8090 (http) 
2016-11-13 07:39:43.099 INFO 12244 --- [lication.main()] th.co.scb.fasteasy.Application   : Started Application in 10.41 seconds (JVM running for 52.053) 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.19.1:integration-test (default) @ creditcards --- 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running CreditCardRunnerIT 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.716 sec <<< FAILURE! - in CreditCardRunnerIT 
initializationError(CreditCardRunnerIT) Time elapsed: 0.008 sec <<< ERROR! 
cucumber.runtime.CucumberException: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy 
Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy 


Results : 

Tests in error: 
    CreditCardRunnerIT.initializationError ▒ Cucumber java.lang.ArrayStoreExceptio... 

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0 

[INFO] 
[INFO] --- maven-failsafe-plugin:2.19.1:integration-test (integration-tests) @ creditcards --- 

我注意到,因为我已经设置行家春季启动插件预集成测试期间运行,黄瓜初始化之前执行它,但我不当然,如果这是错误。我确实尝试配置spring-boot插件,以在“集成测试”期间启动应用程序,而不是“预集成测试”,但似乎没有太大的作用。

任何想法,我在做什么错在这里?

+0

我遇到了同样的问题,我只是添加spring-boot-maven-plugin而没有任何执行。 Java 9(181),Maven 3.5.0,Spring Boot 2.0.0.M5和Cucumber 1.2.5 – Tuno

回答

0

这是jdk版本的相关问题。如果你使用JDK 1.8.0u51,那么它将被解决。

如果您的jdk版本较高,则会发生此问题。 所以请使用JDK 1.8.0u51或更低版本。

欲了解更多,你可以通过这个问题。这与你的问题是一样的:https://github.com/cucumber/cucumber-jvm/issues/912