我有一个问题:)如果涉及到并行执行,它如何工作空手道? 我们以特定的方式使用空手道,在引擎盖下我们有一堆Java代码。我很好奇在我们的Java代码中声明为ThreadLocal的变量是否真的是线程保存的? 每个测试是在单独的线程中运行还是有另一种同时运行测试的方式? 我们面临的问题是,看起来至少有两个正在运行的测试可以访问ThreadLocal变量,而这些变量应该彼此隔离。 你能解释一下吗?
答案 0 :(得分:2)
如果您使用ThreadLocal
,则您自己一个人:)简短的答案是Karate将为执行Scenario
创建一个线程池,并且每个Scenario
都可以进入任何一个这些线程。也许您需要阅读this section,以了解如何强制某些Scenario
-s顺序运行-但是,如果先运行的那些文件没有“清理”,您可能仍然会遇到问题。
编辑:我也认为2种情况不可能在同一时间处在同一线程上,如果您看到此内容-这是一个错误,请帮助我们复制它(请参阅我的答案的最后一行)。
空手道的多线程经过了实战测试,如果不是这种情况,我们将无法宣称可以执行Gatling integration。也许您应该只信任空手道来完成您需要的所有繁重工作?例如,查看“挂钩”:https://github.com/intuit/karate#hooks
当然,如果您确实认为有问题,请按照以下过程进行:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue