测试用例千万不能随便,记录由一个测试用例异常引起的思考

测试用例大家平时写不写?

我以前写测试用例只是针对业务接口,每个接口写一个,数据case也只是测一种。能跑通就可以了。要不同的场景case,那就改数据。重新跑一遍。简单省事。

但是自从我业余时间开始维护开源后,开始加深了对测试用例的理解。甚至我现在已经把测试用例的地位提升了与核心代码一样重要的地位,我曾戏称过光写核心代码不写测试用例代码的都是耍流氓行为。

开源项目面对的是的所有人,每个人每个公司的环境都不同,项目结构也不一样,jdk,spring体系的版本,第三方依赖包都不一样。所以开源框架必须要在所有的场景下都工作正常。这么多功能点,这么多场景,哪怕我是作者,光靠熟悉度是不可能记起来那么多细节点的,这时候测试用例就显得非常重要了,它是整个项目的最关键的质量保障。很多时候,我都是靠测试用例来发现一些边缘细小的bug的。目前我的开源项目拥有870个测试用例,覆盖了大概90%以上的场景。

这篇文章探讨一个由测试用例引发的测试用例运行机制的问题。

事情的起因是一个群里的小伙伴发现某一个单元测试用例在配置项错误的时候,spring上下文竟然执行了2次,而在正确配置的情况下,是正常只启动了一次。这让他很不解,以为是框架出了问题。

他之所以觉得spring启动了2次,是看到日志中出现了2次springboot的logo打印,2次一模一样的报错:

  .   ____          _            __ _ _  /\ / ___'_ __ _ _(_)_ __  __ _     ( ( )___ | '_ | '_| | '_ / _` |      \/  ___)| |_)| | | | | || (_| |  ) ) ) )   '  |____| .__|_| |_|_| |___, | / / / /  =========|_|==============|___/=/_/_/_/  :: Spring Boot ::        (v2.0.5.RELEASE)   com.yomahub.liteflow.exception.ELParseException: 程序错误,不满足语法规范,没有匹配到合适的语法,最大匹配致[0:7] 	at com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder.setE