2014-12-03 96 views
-1

我有一个标准测试类和一个主要方法以及一个JUnit类,我正在使用它来编写联系人时进行测试目录通过测试驱动开发。我需要使用assertEquals & assertTrue等方法。正如我之前从未使用过的那样,我在标准测试类中编写了一个简单测试,并在预期时返回True,并在预期时抛出异常。Java - assertEquals&assertTrue - 在JUnit中通过异常[null]测试失败,但通过测试类

然后我搬进了我的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

您需要向我们展示更多代码(两个类中的整个测试方法)。 – 2014-12-03 18:30:25

+0

只需添加一些。希望有所帮助。 – user2962713 2014-12-03 18:41:22

+0

将main.cSearchFirst(“Ben”)。get(0).getfName()分解为单独的中间变量,以查看哪些级别为null,如果您不知道如何将其作为单个表达式进行调试。这里没有特定的JUnit。 – kryger 2014-12-03 21:37:45

回答

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(); 

巴掌调试器在那里,并通过看空被抛出哪里走。

编辑:我还建议你做一个检查周围的空值,如果你期望为空,否则尝试/捕获空例外,并通过测试失败。

+0

我只是增加了一些代码,如果这有助于帮助您的怀疑? – user2962713 2014-12-03 18:40:05

+0

这是一个意外。已更新以反映真实的代码。感谢迄今为止的帮助。任何更多将不胜感激! – user2962713 2014-12-03 18:43:37

+0

Ben“.equals(testStuff)也在测试类中返回True。 – user2962713 2014-12-03 18:47:20