注意
本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
本文介绍如何将 ScalaTest 与 Databricks Connect for Databricks Runtime 13.3 LTS 及更高版本配合使用来运行测试。 若要安装用于 Scala 的 Databricks Connect,请参阅 安装用于 Scala 的 Databricks Connect。
若要开始使用并在本地运行 ScalaTest,请参阅 ScalaTest 文档中的入门。
例如,假定一个 src/main/scala/NYCTaxiFunctions.scala 文件,该文件包含一个返回 getSpark 实例的 SparkSession 函数和一个 getTaxis 函数,该函数返回一个表示 DataFrame 目录 trips 架构中 samples 表的 nyctaxi:
NYCTaxiFunctions.scala:
package org.example.application
import com.databricks.connect.DatabricksSession
import org.apache.spark.sql.{DataFrame, SparkSession}
class NYCTaxiFunctions {
def getSpark: SparkSession = {
DatabricksSession.builder().getOrCreate()
}
def getTaxis: DataFrame = {
val spark = getSpark
spark.read.table("samples.nyctaxi.trips")
}
}
另外,假设以下 src/main/scala/Main.scala 文件调用 getSpark 和 getTaxis 函数:
Main.scala:
package org.example.application
object Main {
def main(args: Array[String]): Unit = {
val nycTaxiFunctions = new NYCTaxiFunctions()
val df = nycTaxiFunctions.getTaxis
df.show(5)
}
}
以下 src/test/scala/NYCTaxiFunctionsTest.scala 文件会测试 getSpark 函数是否返回 SparkSession 实例,以及 getTaxis 函数是否返回至少包含一行数据的 DataFrame:
NYCTaxiFunctionsTest.scala:
package org.example.application
import org.apache.spark.sql.SparkSession
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers
class SparkSessionTypeTest extends AnyFlatSpec with Matchers {
"The session" should "be of type SparkSession" in {
val nycTaxiFunctions = new NYCTaxiFunctions()
val spark = nycTaxiFunctions.getSpark
spark shouldBe a [SparkSession]
}
}
class GetTaxisRowCountTest extends AnyFlatSpec with Matchers {
"The DataFrame" should "have at least one row" in {
val nycTaxiFunctions = new NYCTaxiFunctions()
val df = nycTaxiFunctions.getTaxis
df.count() should be > (0L)
}
}
若要运行这些测试,请参阅 ScalaTest 快速入门或 IDE 的文档。 例如,对于 IntelliJ IDEA,请参阅 IntelliJ IDEA 文档中的“测试 Scala 应用程序”。