《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(3) https://developer.aliyun.com/article/1232285?groupCode=java
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. Git文件名称过长
由于资源目录名称较长(大概超过50个字符),可能会导致git检出代码时出现以下错误:
或者,在添加文件时出现以下错误:
可以通过以下git设置参数解决:
当然,测试用例名称和资源目录名称没必要太长,可以进行一些精简使其小于等于50个字符。
1. JSON资源文件格式
关于JSON资源文件是否格式化的建议:不要格式化JSON资源文件内容,否则会占用更多的代码行数,还会导致无法直接进行文本比较。
《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(5) https://developer.aliyun.com/article/1232283?groupCode=java