当所开发的系统中,测试程序被依性质做区分,例如:单元测试 (Unit Testing)、集成测试 (Integation Testing)。通常会让集成测试交给后端的 CI 系统来执行,因为相较于单元测试,集成测试所需的执行条件较高、所耗的时间也相对地较长。否则随着程序日渐庞大,很有可能会出现只是几分钟的程序修改,但等测试执行完成却要花上数倍时间的情况。
而单元测试就会被程序撰写人员执行,用来确认程序是否依设计的内容来完成,所以这个时候就会需要有一个简易的方法可以用来触发单元测试的执行。在 Android Studio 中可以设定 Configuration 以便用来触发不同的执行内容,像是要执行测试可以选择新增 JUnit 或 TestNG 设定来启动测试。
以 JUnit 为例,如果要在一堆的测试程序档中只执行特定的测试项目,最直接的方法就是把文件用不同的文件夹或是 Package 分隔,在设定 Configuration 时指定对应的文件夹或是 Package,就可以在测试启动后只执行其下的测试文件内容。
只是有的时候项目的结构较为复杂,因为规划的关系同性质的测试文件没有办法都归在同一个文件夹或 Package 下,更进一步可能文件在不同阶层的文件夹或 Package 间交错。而 Android Studio 的 JUnit Configuration 同时只能指定一个文件夹或 Package,就算是可以指定多个,要一个一个的设定不但麻烦还会有遗漏的问题。当开发还在进行、项目结构还持续有异动时,要维持设定的正确更是个挑战。
这时如果测试文件的名称有一定的规则,例如:单元测试以 UT 做为档名的结尾、集成测试以 IT 做为档名的结尾,可以使用 JUnit Configuration 里的另一个选择 - Pattern。不过这个部份在官方文件中没有找到比较明确的说明,只有简略地提一下可以透过搜寻由清单中选出所需的文件。
实际上可以如下图所示,在 Pattern 右方文字框中输入 Regular Expression 内容,像是要过滤以 UT 结尾的文件可以输入 ^(.\*UT$).\*$
。启动后会依设定的搜寻范围来进行比对,挑出文件名称符合样板的测试文件,并执行所有符合条件的测试程序。