我们在测试运行器中设置了一个 @BeforeAll 方法,该方法在运行测试之前完成各种前置条件步骤,例如设置枚举变量、响应模式、登录身份验证等。这一切都运行良好,没有问题。
但是,当它移动到执行测试时,在 testParallel、Runner.path(feature list) 下,这些测试总是会被跳过。
19:22:56.411 [main] INFO com.intuit.karate.Runner - karate.env is: 'dev'
19:22:56.744 [main] DEBUG com.intuit.karate.Suite - [config] classpath:karate-config.js
19:22:56.755 [main] INFO com.intuit.karate.Suite - backed up existing 'target/karate-reports' dir to: target/karate-reports_1699060976753
19:22:56.756 [main] DEBUG com.intuit.karate.Suite - waiting for 2 features to complete
Karate version: 1.4.1 | env: dev
======================================================
elapsed: 0.35 | threads: 16 | thread time: 0.00
features: 0 | skipped: 2 | efficiency: 0.00
scenarios: 0 | passed: 0 | failed: 0
======================================================
Runner.runFeature("classpath:net/charter/" + serviceName + "/constants.feature", args, true);
行中设置为 true?这不是问题,只是一个请求。karate.logger.debug('enumList is: ', enumList);
,因为记录器似乎不提供任何输出。背景:
您关于
@BeforeAll
和 @Test
之间共享状态的问题是 Java / JUnit 特定问题,与空手道无关。一种可能的选择是使用 Java 单例,在 @BeforeAll
中初始化它,然后在您的空手道测试(或 karate-config.js)中您可以访问此单例,例如
* def Utils = Java.type('my.Utils`)
# the java getConfig() returns a Map
* def myConfig = Utils.getInstance().getConfig()
Runner.runFeature()
不建议用于运行空手道测试。我本以为 karate.callSingle()
自然地解决了你似乎想要在这里做的事情。任何其他要求都需要对空手道进行更改,并且可能此功能请求(似乎很少有团队想要)会产生影响:https://github.com/karatelabs/karate/issues/2235