为不带参数的spark scala函数编写单元测试?

wrrgggsh  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(341)

我正在编写scala函数的单元测试,我将模拟的sparkDataframe传递给该函数,然后使用 assertSmallDataFrameEquality(actualDF, expectedDF) 函数来检查我的函数是否正确转换。
最近我遇到一个函数,它不带参数,返回列类型。现在因为它不期待任何争论。我应该如何为这个函数编写测试用例。我的职能如下。

  1. def arriveDateMinusRuleDays: Column = {
  2. expr(s"date_sub(${Columns.ARRIVE_DATE},${Columns.RULE_DAYS})")
  3. }

测试蓝图写在下面

  1. test("arrive date minus rule days") {
  2. import spark.implicits._
  3. val today = Date.valueOf(LocalDate.now)
  4. val inputDF = Seq(
  5. (Y, today, 0, 80852),
  6. (S, today, 1, 18851))
  7. .toDF(FLAG, ARRIVE_DT, RULE_DAYS,ITEM_NBR)
  8. val actualOutput = DataAggJob.arriveDateMinusRuleDays() // How to pass my column values to this function
  9. // val exepectedoutput
  10. assertmethod(actualoutput, expectedoutput)
  11. // print(actualOutput)
  12. }
oknwwptz

oknwwptz1#

您不需要测试每个单独的函数。单元测试的目的是维护实现和下游使用者之间的契约,而不是实现细节。
如果您的作业在给定输入的情况下返回预期的输出,那么不管特定函数在做什么,它都能正常工作。应该保密以免混淆,

相关问题