java - 为什么我的测试 Java 方法只返回列表中的第一个键?
问题描述
public Key equalorLess(Key key) {
if (first == null || first.key.compareTo(key) > 0) return null;
Node x = first;
while(x.next != null && x.next.key.compareTo(key) <= 0) {
x = x.next;
}
return x.key;
}
这是返回表中最大键的代码,它是 < 或 = 输入键。因此,在“abcd”中,如果您调用“e”,您将返回“d”。或者如果你叫“a”,你会得到“a”。
我正在编写如下所示的测试代码。先行者,我知道这是一团糟。
public static void equalorLessTest( String key, String answer) {
String keys = "abcdefijklxyz";
LinkedList<String,Integer> newLst= new LinkedList<String,Integer>();
for (int i =0; i < keys.length(); i++) {
newLst.put(keys.substring(i, i+1),i);
}
String result = newLst.equalorLessTest(key);
if ( answer == null) {
if (result == null)
StdOut.format("equalorLessTest: Correct String %s Answer: null\n", key,result);
else
StdOut.format("equalorLessTest: *Error* String %s Actual: %s\n", key,result);
return;
}
if (result == null && answer != null ) {
StdOut.format("equalorLess: *Error* String %s Actual: null\n", key,result);
return;
}
if ( result.compareTo(answer) ==0)
StdOut.format("equalorLess: Correct String %s Actual: %s\n", key,result);
else
StdOut.format("equalorLess: *Error* String %s Actual: %s\n", key,result);
}
唯一有效的测试是检查空值。我正在迭代那组测试键。所以,如果我把“b”作为我的输入,我会得到“a”。我尝试测试的每一个都返回“a”。在其他测试用例中,我倾向于在我创建的给定列表中获得空值或第一个键。有人可以看看我的测试方法并告诉我发生了什么。我相信实际的功能是正确的。它需要以这种方式完成。我不能使用其他方法。
解决方案
的两个分支if
是相同的:
if(temp!= null && x.key.compareTo(temp) >= 0)
temp = x.key;
else
temp = x.key;
那一定是个bug。
推荐阅读
- java - 连接到 MySql 数据库时,Andriod studios 应用程序崩溃
- heroku - Heroku 使用 SIGTERM 计划的 Dyno 重启
- oracle - 创建 aiu_trigger ,表可以被多个用户修改
- python - 引诱报告:未定义子套件时自动定义
- kubernetes - 构建REST客户端失败
- calendar - 如何将whatsapp与日历同步以进行自动响应
- python - 如何使用 split() 方法从现有字符串列创建新的 Dataframe 列?
- flutter - 使用“blue_thermal_printer 1.1.3”在蓝牙热敏打印机上颤振打印 UTF-8(越南语)
- asp.net - 数据准备好后逐一绑定GridView行
- javascript - 使用时区 JS 库在 ISO-8601 中使用时区偏移格式化日期