1. 单元测试
1.1 Prompt
为下面的<原代码>生成单元测试,你可选的技术为Junit5, Mockito
.
你编写代码时遵循以下准则:“”"
1.清晰明确的目标:每个单元测试应该有明确的目标,测试一个特定的功能或代码单元。确保测试的目标清晰,不要试图一次测试太多功能。
2. 独立性:每个单元测试应该是独立的,不依赖于其他测试或外部资源。这样可以确保每个单元测试都可以独立运行和验证代码的正确性。
3. 边界条件覆盖:确保单元测试覆盖各种边界条件和异常情况,包括输入的边界值、边界条件的处理等。这样可以提高代码的健壮性和鲁棒性。
4. 可重复性:每次运行相同的单元测试都应该得到相同的结果,不受环境或其他因素的影响。这可以确保测试结果的可靠性和一致性。
5. 可读性和可维护性:编写清晰、简洁、易于理解的单元测试代码,使其他开发人员能够轻松理解和维护测试代码。
6. 频繁运行:单元测试应该经常运行,最好是在每次代码更改后运行。这样可以及早发现潜在的问题,并迅速定位和修复代码错误。
7. 及时反馈:单元测试应该提供即时反馈,使开发人员能够快速了解测试结果并查找问题。测试结果应该清晰明确,包括测试通过或失败的信息以及失败原因。
8. 维护测试覆盖率:确保单元测试覆盖代码的各个分支和路径,以尽可能涵盖代码的所有情况。通过维护测试覆盖率,可以提高代码质量和可靠性。
“”"
,你可以适当使用@DisplayName, @ParameterizedTest, @Nested
等来使单元测试更准确.
务必要记住,你给的单元测试输入需要考虑多种情况,例如:输入为空,不合法,空串等.
你的代码注释尽量是中文,注意,你无需一定要用到 Mockito,只有在你需要的时候使用就可以。
<原代码所在的类名>: " " ,<原代码>:
“”"
“”",给 " " 方法生成单元测试即可,尽量覆盖每个分支。
先思考分析函数有哪些分支以及边界情况(包含可能的各种非预期的异常情况),一一列出它们。
之后根据你列出的情况再编写代码。
1.2 使用示例
为下面的<原代码>生成单元测试,你可选的技术为Junit5, Mockito
.
你编写代码时遵循以下准则:“”"
1.清晰明确的目标:每个单元测试应该有明确的目标,测试一个特定的功能或代码单元。确保测试的目标清晰,不要试图一次测试太多功能。
2. 独立性:每个单元测试应该是独立的,不依赖于其他测试或外部资源。这样可以确保每个单元测试都可以独立运行和验证代码的正确性。
3. 边界条件覆盖:确保单元测试覆盖各种边界条件和异常情况,包括输入的边界值、边界条件的处理等。这样可以提高代码的健壮性和鲁棒性。
4. 可重复性:每次运行相同的单元测试都应该得到相同的结果,不受环境或其他因素的影响。这可以确保测试结果的可靠性和一致性。
5. 可读性和可维护性:编写清晰、简洁、易于理解的单元测试代码,使其他开发人员能够轻松理解和维护测试代码。
6. 频繁运行:单元测试应该经常运行,最好是在每次代码更改后运行。这样可以及早发现潜在的问题,并迅速定位和修复代码错误。
7. 及时反馈:单元测试应该提供即时反馈,使开发人员能够快速了解测试结果并查找问题。测试结果应该清晰明确,包括测试通过或失败的信息以及失败原因。
8. 维护测试覆盖率:确保单元测试覆盖代码的各个分支和路径,以尽可能涵盖代码的所有情况。通过维护测试覆盖率,可以提高代码质量和可靠性。
“”"
,你可以适当使用@DisplayName, @ParameterizedTest, @Nested
等来使单元测试更准确.
务必要记住,你给的单元测试输入需要考虑多种情况,例如:输入为空,不合法,空串等.
你的代码注释尽量是中文,注意,你无需一定要用到 Mockito,只有在你需要的时候使用就可以。
<原代码所在的类名>: " LLMContentUtils “,<原代码>:
“””
/**
* 去除input开头结尾的单引号
* “‘aaa’” -> “aaa”
* " ‘aaa’" -> “aaa”
* “aaa” -> “aaa”
* “aa’a’c’” => “aa’a’c”
* null -> null
* “” -> “”
*
* @param str 输入
* @return 去除单引号的输出
*/
public static String removeQuote(String str) {
if (str == null) {
return null;
}
return StringUtils.strip(str, "'");
}
“”"
2. 代码生成
2.1 Prompt
你是一个专业的Java开发人员,按照注释,实现下列Java代码
你可以选择的工具类:
“”"
- Apache Commons Lang:
- StringUtils: 字符串操作工具类。
- ArrayUtils: 数组操作工具类。
- NumberUtils: 数字操作工具类。
- DateUtils: 日期操作工具类。
- SystemUtils: 系统相关信息工具类。
- ClassUtils: 类相关操作工具类。
- ObjectUtils: 对象操作工具类。
- Validate: 验证工具类。
- RandomStringUtils: 随机字符串生成工具类。
- ExceptionUtils: 异常处理工具类。
- Guava:
- Preconditions: 前置条件检查工具类。
- Strings: 字符串操作工具类。
- Lists: 列表操作工具类。
- Maps: Map操作工具类。
- Sets: 集合操作工具类。
- Files: 文件操作工具类。
- Iterables: 可迭代对象操作工具类。
- Ordering: 排序工具类。
- CharMatcher: 字符匹配工具类。
- Splitter: 字符串拆分工具类。
“”"
你可以使用的特性包括Java8-Java17的特性,如:
“”"
• Lambda 表达式、函数式接口、方法引用、Stream API
• Optional
• 新的日期和时间 API (java.time)
• CompletableFuture
• 接口静态方法
“”"
你的代码需要遵循如下准则:
“”"
- KISS 原则:保持代码简单,避免复杂化。
- DRY 原则:避免重复代码,注重复用。
- 开放封闭原则:支持扩展,减少修改。
- 组合优于继承:优先使用组合而非多层继承。
- 单一职责原则:每个类或模块专注于一个功能。
- 关注分离:逻辑、渲染和数据处理相互独立。
- 避免过度编码:不为未来可能的需求编写代码。
- 注重文档:为代码提供清晰的注释和说明。
- 追求可读性:编写清晰、易维护的代码。
“”"
根据需求使用上述工具类与特性,按规范实现功能,注重代码清晰性与扩展性。
你需要完成开发的代码:
“”"
“”"