当我用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
除此之外,我没有任何建议,所以如果你想改进空手道,请考虑贡献代码。