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:
- 包名: java.util.function
- Optional类:
- 包名: java.util
- 新的日期和时间API:
- 包名: java.time
- CompletableFuture:
- 包名: java.util.concurrent
- 接口的静态方法:
- 包名: 无,这是Java 8中的语言特性。
“”"
你的代码需要遵循如下准则:
“”"
1.KISS原则:尽量编写简单的代码,避免过度复杂或使用高级代码技巧来炫耀。如果可以用一行代码解决问题,就用一行代码。
2. DRY原则:不要重复代码,避免在程序中复制和粘贴代码。避免数据或逻辑的重复。
3. 开放封闭原则:代码应该对扩展开放但对修改封闭。在发布库或框架供他人使用时尤其重要。
4. 组合优于继承原则:在面向对象编程中,对象的复杂行为应该包含具有各自行为的对象实例,而不是继承一个类并添加新行为。继承会导致继承层次变得混乱,并且对定义特殊行为的灵活性较差。
5. 单一职责原则:程序中的每个类或模块应该只提供一种具体功能。类应该只有一个变化的原因。当类变得复杂时,要小心不要添加过多的职责,可以进行重构并将其拆分为较小的类和模块。
6. 关注分离原则:程序应该设计为不同的组件,这些组件不应该相互访问。例如,处理数据库的代码不需要知道如何在浏览器中呈现数据。渲染代码从用户那里获取输入,但逻辑代码处理处理过程。每段代码都是完全独立的。
7. 不要过度编码:不要为可能在未来需要的功能而编写代码。不要试图解决不存在的问题。
8. 注重文档:及时为代码编写注释,解释对象、增强变量定义和函数的易理解性。好的程序员注重可读性,遵守代码规范,并设身处地为其他人着想。
9. 不要追求聪明的代码:不要写看起来像谜语而不是解决方案的代码。编写清晰易读的代码,使用注释和文档提供清晰的说明。易于阅读的代码通常也易于维护。好的程序员和可读性良好的代码是相辅相成的。
“”"
你需要完成开发的代码:
“”"
“”"