是否有办法在空手道中捕获org.graalvm.polyglot.PolyglotException,而(Java)功能



当我用java类运行空手道功能文件时,功能文件步骤与org.graalvm.polyglot.PolyglotException失败,我们是否有办法处理这些异常?

因为有几个测试用例有java实现,这些都是通过空手道功能测试的。例如,让我们假设一个Java类&功能

public class TestUtil{
public static void execute(){
// this value might be null for some use cases & unexpected
Long unexepectedVal = SomeInternalClass.getValue(); 
SomeInternalImpl.processAndValidate(unexepectedVal.toString());
}
}

特性

Background:
* def TestUtil = Java.type("pkg")
Scenario:
* eval TestUtil.execute()

在执行功能文件一些用例时,我可能会得到NPE/ConnectionTimeOutException/Other Runtime exceptions,但在失败期间,我得到了org.graalvm.polyglot.PolyglotException作为根异常&如何trace/print原始异常HTML报告

?。尝试捕获org.graalvm.polyglot.PolyglotException并跟踪原始异常。

你可以使用JS的try-catch块和eval关键字。下面是一个示例,它还显示了如果您仍然希望测试失败,如何使用karate.fail()

* eval
"""
try {
var TestUtil = Java.type("pkg.TestUtil");
TestUtil.execute();
} catch (e) {
karate.logger.error('failed:', e);
// do your custom cleanup or logging
karate.fail('failed because of: ' + e);
}
"""

进一步阅读:https://github.com/karatelabs/karate/issues/2242

还有:https://stackoverflow.com/a/75903894/143475

除此之外,我没有任何建议,所以如果你想改进空手道,请考虑贡献代码。

相关内容

  • 没有找到相关文章

最新更新