一般来说,应该有单元测试来涵盖个别 classes;必须有集成测试来涵盖端到端的场景,如构建,合并和查询。单元测试必须独立运行(不需要外部沙箱)。

测试 v1.5 及以上

  • mvn clean test 运行单元测试,它的测试覆盖范围有限。
    • 单元测试没有额外的依赖且能在任何机器上运行
    • 单元测试不覆盖端到端的场景,如构建,合并和查询。
    • 单元测试只需几分钟即可完成。
  • dev-support/test_all_against_hdp_2_4_0_0_169.sh 运行集成测试,有很好的覆盖率。
    • 集成测试 最好运行在 Hadoop 沙箱上。我们建议您在沙箱中检出一个代码副本,并在其中直接运行 test_all_against_hdp_2_2_4_2_2.sh。如果您不想在沙箱上添加代码,请参阅 更多关于 V1.5+ UT/IT 分离 的内容。
    • 正如名称所示,脚本仅适用于 HDP 2.4.0.0-169.2,但您可以从中理解集成测试是如何运行的。
    • 集成测试从生成随机数据开始,然后构建 Cube、合并 Cube,最后查询结果并与 H2 引擎进行比较。
    • 集成测试需要一到两个小时才能完成。
  • nohup dev-support/test_all_against_hdp_2_4_0_0_169.sh < /dev/null 2>&1 > nohup.out & 以无人值守的方式运行集成测试。

更多关于 V1.5 UT/IT 分离

运行 mvn verify -Dhdp.version=2.4.0.0-169 (假定您运行在 HDP 2.4 沙箱上) 是运行完整的所有测试套件所需的全部内容。

它将按顺序执行以下步骤:

1. Build Artifacts 
2. Run all UTs (takes few minutes) 
3. Provision Cubes on the sandbox environment for IT uasge (takes 1~2 hours) 
4. Run all ITs (takes few tens of minutes) 
5. Verify jar stuff 

如果您的代码改动很小那么只需要运行 UT,使用:
mvn test
如果您的沙箱已经配置,并且您的代码更改不会影响沙箱配置的结果,(并且您不想等待数小时的配置),只需运行以下命令来单独运行 UT 和 IT:
mvn test
mvn failsafe:integration-test

Cube 配置

测试用的 cube 配置确实会运行 kylin cube 作业,以在沙箱中准备样例 cube。这些准备好的 cubes 将会被集成测试使用,当前准备步骤与 maven 预集成测试阶段绑定,且其包含运行 BuildCubeWithEngine(需要 HBase),BuildCubeWithStream(需要 Kafka)。您可以在沙箱或进行开发的计算机中运行 mvn 命令。对于后者情况您需要在 $KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties 中设置 kylin.job.use-remote-cli=true。
尝试将 -DfastBuildMode=true 附加到 mvn verify 命令,通过跳过增量 Cubing 来加速配置。