接上篇:https://developer.aliyun.com/article/1227490?spm=a2c6h.13148508.setting.26.48e04f0eaBVGWH
三、 测试用例及资源命名
俗话说:“没有规矩,不成方圆。”所以,为了更好地利用JSON序列化技巧,首先对测试用例和资源文件进行规范化命名。
1. 测试类命名
按照行业惯例,测试类的命名应以被测试类名开头并以Test结尾。比如:UserService(用户服务类)的测试类需要命名为UserServiceTest(用户服务测试类)。
单元测试类应该放在被测试类的同一工程的“src/test/java”目录下,并且要放在被测试类的同一包下。注意,单元测试类不允许写在业务代码目录下,否则在编译时没法过滤这些测试用例。
2. 测试方法命名
按照行业规范,测试方法命名应以test开头并以被测试方法结尾。比如:batchCreate(批量创建)的测试方法需要命名为testBatchCreate(测试:批量创建),queryByCompanyId(根据公司标识查询)的测试方法需要命名为testQueryByCompanyId(测试:根据公司标识查询)。
当一个方法对应多个测试用例时,就需要创建多个测试方法,原有测试方法命名已经不能满足需求了。有人建议在原有的测试方法命名的基础上,添加123等序号表示不同的用例。比如:testBatchCreate1(测试:批量创建1)、testBatchCreate2(测试:批量创建2)……但是,这种方法不能明确每个单元测试的用意。
这里,作者建议在原有的测试方法命名的基础上,添加“With+条件”来表达不同的测试用例方法。
1) 按照结果命名
• testBatchCreateWithSuccess(测试:批量创建-成功);
• testBatchCreateWithFailure(测试:批量创建-失败);
• testBatchCreateWithException(测试:批量创建-异常);
2) 按照参数命名
• testBatchCreateWithListNull(测试:批量创建-列表为NULL);
• testBatchCreateWithListEmpty(测试:批量创建-列表为空);
• testBatchCreateWithListNotEmpty(测试:批量创建-列表不为空);
3) 按照意图命名
• testBatchCreateWithNormal(测试:批量创建-正常);
• testBatchCreateWithGray(测试:批量创建-灰度);
• testBatchCreateWithException(测试:批量创建-异常);
当然,还有形成其它的测试方法命名方式,也可以把不同的测试方法命名方式混用,只要能清楚地表达出这个测试用例的涵义即可。
3. 测试类资源目录命名
这里,作者建议的资源目录命名方式为——以test开头且以被测试类名结尾。比如:UserService(用户服务类)的测试资源目录可以命名为testUserService。
那么,这个资源目录应该放在哪儿了?作者提供了2个选择:
• 放在“src/test/java”目录下,跟测试类放在同一目录下——这是作者最喜欢的方式;
• 放在“src/test/resources”目录下,跟测试类放在同一目录下——建议IDEA用户采用这种方式。
4. 测试方法资源目录命名
在前面的小节中,我们针对测试方法进行了规范命名。这里,我们可以直接拿来使用——即用测试方法名称来命名测试目录。当然,这些测试方法资源目录应该放在测试类资源目录下。比如:测试类UserServiceTest(用户服务测试类)的测试方法testBatchCreateWithSuccess(测试:批量创建-成功)的测试资源目录就是testUserService/testBatchCreateWithSuccess。
另外,也可以采用“测试方法名称”+“测试条件名称”二级目录的命名方式。比如:测试类UserServiceTest(用户服务测试类)的测试方法testBatchCreateWithSuccess(测试:批量创建-成功)的测试资源目录就是testUserService/testBatchCreate/success。
这里,作者首推的是第一种方式,因为测试方法名称和资源目录名称能够保持一致。
5. 测试资源文件命名
在被测试代码中,所有参数、变量都已经有了命名。所以,建议优先使用这些参数和变量的名称,并加后缀“.json”标识文件格式。如果这些资源文件名称冲突,可以添加前缀以示区分,比如:userCreateList的资源文件名称为“userCreateList.json”。
另外,在测试用例代码中,把这些测试资源文件加载后,反序列化为对应的数据对象,这些数据对象的变量名称也应该跟资源文件名称保持一致。
6. 测试资源文件存储
在测试资源目录和名称定义好之后,就需要存入测试资源文件了。存储方式总结如下:
• 如果是测试类下所有测试用例共用的资源文件,建议存储在测试类资源目录下,比如:testUserService;
• 如果是测试用例独有的资源文件,建议存储在测试方法资源目录下,比如:testUserService/testBatchCreateWithSuccess;
• 如果是某一被测方法所有的测试用例共用的资源文件,建议存储在不带任何修饰的测试方法资源目录下,比如:testUserService/testBatchCreate;
• 如果测试类资源目录下只有一个测试方法资源目录,可以去掉这个测试方法资源目录,把所有资源文件存储在测试类资源目录下。
注意:
这里的资源文件不光是JSON资源文件,但也可以是其它类型的资源文件。
7. 文件名称过长
由于资源目录名称较长(大概超过50个字符),可能会导致git检出代码时出现以下错误:
或者,在添加文件时出现以下错误:
可以通过以下git设置参数解决:
当然,测试用例名称和资源目录名称没必要太长,可以进行一些精简使其小于等于50个字符。
8. JSON资源文件格式
关于JSON资源文件是否格式化的建议:不要格式化JSON资源文件内容,否则会占用更多的代码行数,还会导致无法直接进行文本比较。
接下篇:https://developer.aliyun.com/article/1227488?groupCode=java