gpt4 book ai didi

java - 在 Java 中使用 toString() 进行单元测试

转载 作者:行者123 更新时间:2023-12-05 01:19:41 26 4
gpt4 key购买 nike

在单元测试中,根据 toString() 返回的字符串来测试返回值通常是个好主意吗?

例如,执行以下操作以确保返回预期的列表:

 assertEquals(someExpression.toString() ,"[a, b, c]");

在我看来,有以下几点考虑:

优点:节省时间(构建实际期望值需要更长的代码)。

缺点:测试依赖于 toString(),它没有在文档中正式定义,因此可能会在未来的任何版本中更改。

最佳答案

我唯一一次在 toString() 上测试一个对象是当我有一个没有实现的不可编辑的类时 hashcodeequals ,而是实现了一个 toString()输出其字段的内容。即便如此,我也不会使用硬编码字符串作为相等性测试,而是做类似的事情

SomeObject b = new SomeObject(expected, values, here);
assertEquals(a.toString(), b.toString());

您的方法一开始可能会节省时间,但从长远来看,仅仅维护测试就需要花费更多时间,因为您正在对 toString() 的预期结果字符串进行硬编码。 .

编辑 1:自然地,如果您正在测试输出字符串的函数/进程,那将是您应该使用硬编码字符串作为预期结果的情况之一。

String input = "abcde";
String result = removeVowels(input);
assertEquals(result, "bcd");

关于java - 在 Java 中使用 toString() 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com