今天开始着手去思考一下如何把每次release上来的书用自动化实现一下sanity,尽量覆盖大部分的checklist,以便给项目组节省更多的资源。
由于每次要release的书类型都不一样,所以其中有很多功能不同,也有一些压根连空间都没有,比如navigation box等,或者每本书要进行全文检索的值都不一样,这个时候如何通过更精简的代码去解决这类棘手的问题呢?方法很多吧,比如读取Excel、CSV等,由于不喜欢棒子的jxl,我这里推荐一个用的比较少但真的很好用的一个方法---datapool.
我们可以通过install software在eclipse中安装关于TPTP的相关组件,galileo版本很方便(indigo暂时没有找到相关下载)
好啦,这个时候我们就可以create一个datapool,这个类似于excel表格的文件,我们可以把很多我们感兴趣的东西都设置为column,例如刚刚说的navigation box. 比如volume A 会有navigation box 而 volume B没有。
这个时候在代码里就可以去判断 assertTrue(page.isElementExisted("nav").equalsIgnoreCase(dpIter.dpString("Nav")))
这里的Nav是我们在*.datapool中的column name.
这个时候大家可能开始好奇这个dpIter是做甚的,well让我解释一下,dpIter是一个IDatapoolIterator 的对象,所以要哥们们要想调到这个datapool,必须要有tptp-models.jar以及tptp-models-hierachy.jar,还有一些必不可少的jar包用来进行运行期的操作,例如org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar等。
使用datapool可以让case的复杂程度降到最低,同时又可以让case可以handle变化不定的数据,这样当有新书需要release的时候,完全可以通过维护datapool文件来实现对checklist的自动化。
如何操作datapool以及如何让datapool发挥出色,这里不再赘述,当然初始化与迭代是必要的,设计思想就说道这里,代码部分大家自己去考虑去写。
解决问题的方式有很多,在碰到问题时候不应该去盲目的去实现一个看似可行的方法,要考虑到风险、灵活性等,对每一个解决方案的设计都是需要进行足够的思考,找到对自己team最有帮助的方法去解决实际问题才是正经事