Spark菜鸟学习营Day4 单元测试程序的编写

Spark菜鸟学习营Day4

单元测试程序的编写

Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的。

Step0:需求分析

在测试案例编写前,需完成需求分析工作,明确程序所有的输入和输出情况。
具体请见需求分析章节。

Step1:新建测试案例

测试案例统一放置在如下位置:
compute-->src-->test-->java-->com.icbc.aas.darts.compute-->split.processor
![2016-07-26 16-56-36](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 16-56-36.jpg)

选择New-->Java Class,在窗口中,输入测试代码名称,Kind选择ProcessorTest
![2016-07-26 16-58-02](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 16-58-02.jpg)

如果无法选到ProcessorTest,请在Settings-->File and Code Template,右上角选择Project
![2016-07-26 17-01-00](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-01-00.jpg)

在生成的测试案例代码中,首先完善addParams方法。
![2016-07-26 17-02-22](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-02-22.jpg)

Step2:输入数据准备

针对每个输入数据,循环以下步骤:

Step2.1:pojo(Java数据结构)建立

运行PojoMaker工具
![2016-07-26 17-03-48](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-03-48.jpg)

根据提示,完成pojo的建立
![2016-07-26 17-04-49](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-04-49.jpg)

Step2.2:数据文件建立

运行DataPrepareUtil工具。
![2016-07-26 17-05-38](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-05-38.jpg)

根据提示,从Oracle取数生成数据文件。
其中,suffix为文件名后缀,用于防止文件互相冲突,建议与代码编号一致。
![2016-07-26 17-06-30](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-06-30.jpg)

文件保存在如下路径中
![2016-07-26 17-09-45](http://o6jujlzry.bkt.clouddn.com/2016-09-03-2016-07-26 17-09-45.jpg)

Step2.3:执行数据准备

在prepareData方法中,调用API,执行数据准备。

    @Override
    public void prepareData(ComputeBatchNode cbn, JavaSparkContext sc, Hashtable params, ComputeResult result) {
        //Dateframe:qtsl_temp
        mockSparkTempTable("QTSL_TEMP", "_600", cbn);

        //Dataframe:par_fund_partner
        mockSparkTempTable("PAR_FUND_PARTNER", "_600", cbn);

        //Oracle表:out_trd_qtsl_his
        mockMybatisTempTable("splitSqlMapper.getQtslHis", "OUT_TRD_QTSL_HIS_600");

        //RDD:qtsl_temp
        mockSparkRDD("QTSL_TEMP", "_600", cbn, QtslTempPojo.class);

        //RDD:par_fund_fill_partner
        mockSparkRDD("PAR_SYS_FILL_PARTNER", "_600", cbn, ParSysFillPartnerPojo.class);

        doPrepareData(cbn, params);
    }

Step3:输出数据准备

原文地址:https://www.cnblogs.com/dt-zhw/p/5837307.html