Java - assertEquals& assertTrue - 在JUnit中测试失败,异常为[null]但传入测试类

时间:2014-12-03 18:28:34

标签: java exception junit null assert

我有一个带有main方法的标准测试类和一个JUnit类,我通过测试驱动开发编写联系人目录时使用它来进行测试。我需要使用诸如assertEquals和amp;之类的方法。 assertTrue。因为我之前从未使用它们,所以我在标准测试类中编写了一个简单的测试,它们在预期时返回True并在预期时抛出异常。

然后我进入了我的JUnit测试类,编写了在标准测试类中传递的相同测试并运行了JUnit测试类。测试失败,出现以下错误:

Test[Method Name] failed with exception [null]

我使用的确切代码如下:

assertEquals("NameImExpectingToFind",obj.searchMethod("nameImSearchingFor").get(0).getName());

我一直坚持这个问题几个小时。它没有意义,它将传递给标准测试类,但不会传递给JUnit测试类。

提前感谢您的帮助!

Test class:
    AddressBook main = new AddressBook();
    Entry Will = new Entry("Will", "Blah",
            "Blah, blah, blah", "TF4 3HS", "077774451",
            "01/02/93");
    Entry Ben = new Entry("Ben", "Blah",
            "Blah, blah, blah", "TF4 3HS", "077774451",
            "01/02/93");
    main.addEntry(Will);
    main.addEntry(Ben);
    //assertEquals("Ben",main.cSearchFirst("Ben").get(0).getfName());
    System.out.println("Ben" == main.cSearchFirst("Ben").get(0).getfName());

返回True。

JUnit Test class:
    AddressBook main = new AddressBook();
    Entry Will = new Entry("Will", "Blah",
            "Blah, blah, blah", "TF4 3HS", "077774451",
            "01/02/93");
    Entry Ben = new Entry("Ben", "Blah",
            "Blah, blah, blah", "TF4 3HS", "077774451",
            "01/02/93");
    main.addEntry(Will);
    main.addEntry(Ben);
    assertEquals("Ben",main.cSearchFirst("Ben").get(0).getfName());
    //System.out.println("Ben" == main.cSearchFirst("Ben").get(0).getfName());

返回测试[方法名称]失败,异常为[null]。

1 个答案:

答案 0 :(得分:0)

在测试之前看起来你有一个空指针

 List<Entry> entries = main.cSearchFirst("Ben");//check for null here, and size
 Entry e = entries.get(0); //again check null here, examine properties in debugger
 String s = e.getfName();

在那里打一个调试器,然后看看抛出null的位置。

编辑:如果您期望null,我还建议对那里的空值进行检查,否则尝试/ catch null异常并使测试失败。