苦苦挣扎着修复无限循环

时间:2016-12-19 13:11:52

标签: java

我是JUnit测试的新手,我正在努力测试一种方法,该方法将搜索特定的车辆登记并输出它找到它

   System.out.println("getSpecificVehicle");
    CVMQueue instance = new CVMQueue();
    VehicleNode newVehicle = new VehicleNode("YBZ5484", "Car", "Ire", 3, 2.2);
    instance.enqueue(newVehicle);
    String expResult = "YBZ5484";
    String result = instance.getSpecificVehicle("YBZ5484");
    assertEquals(expResult, result);

这是我的代码,它会在控制台中循环。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

检查您的代码;如果你改进你找到的格式

while (temp != null) {
...
  if (reg.equalsIgnoreCase(temp.getRegNum())) {
  ...
  }
}

你的循环从不改变温度。那么,为什么它应该在进入时停止循环?所以,显然你的问题是你错过了闭环支撑;当你把那个赋值放到之后的那个大括号时。

真实带走了:

  1. 格式化问题。也许,如果你在编写代码时付出了更多的努力,你会更早地发现这一点。正如Gaket指出的那样:任何理智的IDE(或编码编辑器)可能都有一些“自动格式化”功能,这样就可以自动格式化源代码。
  2. 导致:代码可读性更重要。例如,有“单层抽象”原则;这会告诉你只是把它完全放入那个循环中;相反,你会创建一个方法来完成这项工作。再一次,发现这个简单的问题要容易得多。
  3. 了解如何使用调试器。你看,单元测试的真正强大之处在于它们能够同样这么容易隔离错误:你在某个地方放置一个断点;并在调试器中运行您的测试;你可以直接观察发生的事情。