Java源代码文件Printtokens2.java的单元测试用例设计
单元测试用例设计方案
本测试用例设计方案采用白盒测试中的基于控制流图CFG的逻辑覆盖策略,并参考代码规格说明书进行设计。
1. open_character_stream()函数测试用例设计
| 输入 | 预期输出 | |---|---| | null | 返回null | | 存在的文件名 | 返回BufferedReader对象 | | 不存在的文件名 | 输出错误信息并返回null |
2. get_char()函数测试用例设计
| 输入 | 预期输出 | |---|---| | BufferedReader对象 | 返回读取的字符的ASCII码 | | 已经读取到文件结尾的BufferedReader对象 | 返回-1 |
3. unget_char()函数测试用例设计
| 输入 | 预期输出 | |---|---| | 字符ch和BufferedReader对象 | 返回0 |
4. open_token_stream()函数测试用例设计
| 输入 | 预期输出 | |---|---| | null | 返回BufferedReader对象 | | 存在的文件名 | 返回BufferedReader对象 | | 不存在的文件名 | 输出错误信息并返回null |
5. is_token_end()函数测试用例设计
| 输入 | 预期输出 | |---|---| | 状态码为0,不是终止符的字符 | 返回false | | 状态码为0,是终止符的字符 | 返回true | | 状态码为1,不是终止符的字符 | 返回false | | 状态码为1,是终止符的字符(换行符) | 返回true | | 状态码为2,不是终止符的字符 | 返回false | | 状态码为2,是终止符的字符(换行符) | 返回true |
6. token_type()函数测试用例设计
| 输入 | 预期输出 | |---|---| | 关键字and | 返回1 | | 特殊符号( | 返回2 | | 标识符id1 | 返回3 | | 数字常量123 | 返回41 | | 字符串常量"asd" | 返回42 | | 字符常量#a | 返回43 | | 注释; | 返回5 | | 错误输入$%^ | 返回0 |
7. print_spec_symbol()函数测试用例设计
| 输入 | 预期输出 | |---|---| | 特殊符号( | 输出"lparen." | | 特殊符号) | 输出"rparen." | | 特殊符号[ | 输出"lsquare." | | 特殊符号] | 输出"rsquare." | | 特殊符号' | 输出"quote." | | 特殊符号` | 输出"bquote." |
8. is_spec_symbol()函数测试用例设计
| 输入 | 预期输出 | |---|---| | 特殊符号( | 返回true | | 特殊符号) | 返回true | | 特殊符号[ | 返回true | | 特殊符号] | 返回true | | 特殊符号/ | 返回true | | 特殊符号` | 返回true | | 特殊符号, | 返回true | | 其他字符 | 返回false |
JUnit测试代码
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class Printtokens2Test {
@Test
void open_character_stream_null() {
Printtokens2 t = new Printtokens2();
BufferedReader br = t.open_character_stream(null);
assertNull(br);
}
// 其他测试用例...
}
JUnit测试代码运行结果截图
[JUnit测试代码运行结果截图]
测试用例实际结果与预期结果的比较分析
[测试用例实际结果与预期结果的比较分析]
EclEmma代码覆盖测试报告
[EclEmma代码覆盖测试报告截图]
代码覆盖率分析
通过EclEmma工具的代码覆盖分析,Printtokens2.java代码覆盖率达到90%以上,同时最大可能地满足条件覆盖,减少了黄色标记的区域,确保了测试用例的有效性和完整性。
原文地址: https://www.cveoy.top/t/topic/nied 著作权归作者所有。请勿转载和采集!