当前位置: 首页 > 知识库问答 >
问题:

Cucumber Spring Boot测试可以在“MVN test”中运行,但不能在“MVN verify”中运行。

夏奕
2023-03-14
@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测试”时,我可以在日志中看到,在maven spring boot插件实例化spring boot实例之前,Cucumber runner被实例化:

-------------------------------------------------------
 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)

我知道我的Cucumber测试实际上是一个集成测试,所以我将其作为“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 ---

你知道我做错了什么吗?

共有1个答案

汪晟睿
2023-03-14

这是与jdk版本相关的问题。如果您使用JDK 1.8.0U51,那么这个问题就可以解决了。

如果您的jdk版本更高,那么就会出现这个问题。所以请使用JDK 1.8.0U51或更低版本。

要了解更多,您可以通过这个问题。您的问题也是如此:https://github.com/cucumber/cucumber-jvm/issues/912

 类似资料:
  • 我正在尝试执行这个代码是pycharm 但我总是犯这个错误 但我可以使用terminal运行相同的代码

  • 我刚刚完成了一个用于解密或encrpyt的AES类,它在windows上运行良好,但无法在linux上运行,出现以下错误: 给定的最终块未正确填充 完整代码如下: 请帮我解决这个问题,否则我的老板会解雇我的,非常感谢。

  • 问题内容: 在Chrome浏览器中,它会像应有的那样执行HTTP PUT,但在FireFox 21中却没有。在javascript控制台或后端中没有错误。 这是HTML: 这是jQuery: 我在Fiddler中观察到了它们,并且正常工作(Chrome)和无效工作(Firefox)之间的区别是HTTP PUT在Chrome中启动,而在Firefox中不启动。 现在,我知道并不是所有浏览器都可以保证

  • 这是我的Java代码: 当我运行它时,会出现以下错误: 我正在使用IntelliJ,安装了chrome驱动程序,但没有解决它,所以任何人都知道这个问题的解决方案??

  • 我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。 我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。 我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。

  • 我试图弄清楚是否可以在Express.js应用程序的上下文中运行TestCafe测试。我的想法是创建一个表单,接受输入(如UPC代码),然后单击表单上的submit,它将导致TestCafe测试以无头模式(在某处)生成,并将UPC加载到此页面https://www.ebay.com/sh/research. 从那里,TestCafe将从页面获得结果并将它们粘贴到我的数据库中。 我把测试放在一个名为