如何在Databricks中运行Scalatest Runner的Scala命令行?
在Databricks中运行Scalatest Runner命令的可行性分析
笔记本内执行的情况
直接在Scala笔记本中运行原生scala [-cp scalatest-<version>.jar:...] org.scalatest.tools.Runner [arguments]命令不可行。原因是Databricks Scala笔记本的代码是在集群JVM进程内直接执行代码片段,并非调用系统级的scala命令行工具,这种命令行格式的代码无法被解析执行。
不过可以通过直接调用Scalatest Runner类的main方法实现相同效果,因为Databricks运行时已内置scalatest_2.12__3.0.8.jar,无需额外配置类路径。示例代码如下:
// 直接调用Runner的main方法,传入对应参数 org.scalatest.tools.Runner.main(Array( "-R", "/dbfs/path/to/your/test/classes-or-jar", // 指定测试类或jar的DBFS路径 "-o" // 输出测试结果到控制台 ))
作为作业运行的情况
可以作为Databricks作业运行,有两种常见方式:
- Jar任务类型:将包含测试代码的jar包上传到DBFS,创建作业时选择"Jar"类型,主类填写
org.scalatest.tools.Runner,并在作业参数中指定所需的运行参数(比如-R /dbfs/path/to/test/jar -o)。 - 笔记本任务类型:将上述调用Runner.main的代码写入Scala笔记本,创建作业时选择该笔记本作为任务执行。
注意事项
- 无需手动指定
-cp参数,Databricks运行时的类加载器会自动识别内置的Scalatest包。 - 测试代码或jar的路径必须使用DBFS路径(格式为
/dbfs/...),确保集群能访问到目标资源。
内容的提问来源于stack exchange,提问作者user13800089
相关产品推荐
相关产品推荐

