Testint用几个参数和累加器激发

时间:2018-04-10 15:34:37

标签: scala unit-testing apache-spark

我在SparkStreaming中有一个具有输入参数的unitTest。 -DStream [字符串]

在代码内部,我想要更新LongAccumulator。当我执行测试时,我得到一个NullPointerException因为累加器不存在。有没有办法测试这个?

我的累加器以不同的方式更新。

class Example(conf: Conf)  {
    var accumulator : LongAccumulator= _

    def start(ssc: StreamingContext, ...) = {
       accumulator = ssc.sc.longAccumulator("Orpahns")
       //I could add accumulator as parameter in execute methods... but runAction doesn't admint two parameters.               
       execute(...)
    }
    def execute(stream: DStream[String]): Unit = {
        stream.foreachRDD { rdd =>
          rdd.foreach { r =>
            if (r == "A"){
              acc.add(1)
              sendKafka(...)
            }
        }      
    }

可以测试这种方法吗?

runAction[String](input, service.execute)

当它尝试更新累加器时,它不起作用,因为它没有进入。我可以在execute方法中添加一个新参数,它没关系,但runAction也没有管理更多参数。

0 个答案:

没有答案