2

本地环境可以跑通,但只要一上机器人环境,便会出现错误。一般这种情况都是由于本地与travisJDK版本不一致造成的。然而,机器人又有日志大粘限制,这就决定了,我们不可能将日志等级开启到debug来调试错误。

思索:是否可以使用日志插件,将日志保存为文件,然后将文件回传到我们的服务器,再然后查看问题所在呢?

有没有办法来规避这一情况呢?

思路

最科学的办法

统一本地与机器人的版本了。
但:虽然版本统一了,但操作系统又很难统一。再结合开发环境与生产环境的不同,我们很难做到所有的环境完全统一。

曲线救国

既然只有机器人报错,那么本地测试好后,可以考虑将机器人报错的部分做排除。虽然这不是最好的方法,但在时间宝贵的前提下(机器人10分钟测试跑一次,改一次再测试10分钟,改了6次,就要等1小时),也只能如此了。

方法

配置文件支持

将机器人环境统一写到配置文件的某profiles中,然后命名:travis,并在启用机器人测试时,启用该命名:

spring:
  profiles:
#  开发过程中,请将 travis 修改为 test
    active: ${active:test}

测试文件中,注入该值,并做排除

    
    @Value("${spring.profiles.active}")
    private String active;
    
    public void test() {
         if (!this.active.equals("travis")) {
             // 机器人中报错的代码
         }
    }

总结

生产环境、测试环境、开发环境的不一致问题,会带来一定的困扰,而且一旦发生问题,比如生产环境中发现问题,由于缺少中断环境,则会在排错时浪费大量的时间。

travis虽然好用,但却不能自己定义具体的JDK信息(它的JDK就那几种,比如ORACLE-JDK8就一个),打造自己的单元测试服务器迫在眉睫。

构想:
开发环境(不限)、测试环境同生产环境(OPENJDK)。由于openjdk可以安装到Linux系统中,一旦开发环境(非liunx)与测试环境表现不一致,则可以切到liunx系统中来进行问题的调试。

学习机器人自动生成的shell,建立自己的shell。同时,开发一个小应用,来对接github。接收到github信息后,检出相应的分支,执行单元测试,并将测试的结果推送给github

help

I need help! Thank you!


潘杰
3.1k 声望239 粉丝