Spring Boot Cucumber org.springframework.transaction.TransactionDefinition 错误

Jav*_*Man 2 java cucumber spring-boot

尝试使用 Cucumber 执行 Spring Boot 项目时,我遇到以下错误。快速搜索错误告诉我,我的 pom 文件中需要 spring-tx 。我有一个问题不应该由 spring-boot-configuration-processor 等来处理吗?

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/transaction/TransactionDefinition
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetPublicMethods(Class.java:2902)
    at java.lang.Class.getMethods(Class.java:1615)
    at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)
    at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)
    at cucumber.runtime.Runtime.<init>(Runtime.java:92)
    at cucumber.runtime.Runtime.<init>(Runtime.java:70)
    at cucumber.runtime.Runtime.<init>(Runtime.java:66)
    at cucumber.api.cli.Main.run(Main.java:35)
    at cucumber.api.cli.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: org.springframework.transaction.TransactionDefinition
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 11 more
Run Code Online (Sandbox Code Playgroud)

我基本上试图评估 Spring Boot 是否是 Cucumber + Selenium + API 等的更好选择,而不是使用以下项目https://github.com/sorin-costea/bdd的 vanilla spring

Pau*_*cía 6

我不是回答谁应该处理这个问题,而是提供一个解决方案:

我猜当您从IntelliJ运行它时会发生这种情况,因为它会自动添加弹簧胶。

如果是这种情况,只需编辑Run/Debug Configurations并从胶水字段中删除弹簧参考即可。此外,您还可以添加 StepDefs 包。

为了防止将来出现这种情况,只需将 Step Defs 包添加到 Cucumber Java 模板中,如下所示Run/Debug Configurations