线程" main"中的例外情况 - 无法将测试用例作为java应用程序或调试器运行

时间:2014-06-13 03:29:27

标签: java eclipse

我为我的任务实现了一个AVL树。我将TestAVLFrom.java导入到名为“Assignment 2”的项目中。当我尝试运行我的教授为该课程编写的测试用例时,我收到此错误消息:

enter image description here

当我尝试通过调试器运行测试用例时,我收到“找不到源”错误:

enter image description here

我尝试使用谷歌搜索问题并阅读有关此类错误的stackoverflow上的其他一些帖子,并且共识与类路径有关。但在阅读了很多帖子后,我仍然无法理解人们在谈论什么。

以下是测试用例的代码:

import java.util.HashSet;

public class TestAVLFrom
{
  public static class Fail extends RuntimeException {
    /**
     * 
     */

    public Fail() { super(); }
    public Fail(String msg) { super(msg); }
  }

  public static interface Test {
    public void test();
  }

  public static void main(String[] args) {
    Test[] suite = {
      new Test0(), new Test1(), new Test2(), new Test3(), new Test4(),
      new Test5(), new Test6(), new Test7(), new Test8(), new Test9(),
      new Test10(), new Test11(), new Test12(), new Test13()
    };

    if (args.length == 0) {
      for (int i = 0; i < suite.length; i++) {
        System.out.println("running test " + i);
        suite[i].test(); //Line 30: Error here
      }
      System.out.println("finished");
    } else {
      int count = 0;
      for (int i = 0; i < suite.length; i++) {
        System.out.print("test " + i + ": ");
        System.out.flush();
        try {
          suite[i].test();
          System.out.println("pass");
          count++;
        } catch (Exception e) {
          System.out.println("fail");
        }
      }
      System.out.println("total: " + count + "/" + suite.length);
    }
  }

  // empty tree
  public static class Test0 implements Test {
    public void test() {
      AVLFrom<String> s = new AVLFrom<String>();
      if (s.find("a")) { throw new Fail(); }
     try { s.from("a", 0); throw new Fail(); } catch (NotFound e) {} //Line 55: Error here
    }
  }

EDITED:删除了很多代码,并突出显示了上图中的例外情况。

1 个答案:

答案 0 :(得分:1)

第55行有一个抛出Fail异常的声明:

throw new Fail();

也许缺少一个条件,例如:

if (s.from("a", 0)) 
    throw new Fail();

如果没有,只需删除throw,因为它始终执行并始终无法通过测试。除非当然有NotFound例外。