Java-assertEquals&;assertTrue-测试失败,JUnit中出现异常[null],但在测试类中通过
我有一个带有main方法的标准测试类和一个JUnit类,在通过测试驱动开发编写联系人目录时,我将使用它作为测试的基础。我需要使用assertEquals和assertTrue等方法。因为我以前从未使用过它们,所以我在标准测试类中编写了一个简单的测试,它们在预期时返回True,在预期时抛出异常 然后我进入我的JUnit测试类,编写在标准测试类中通过的相同测试并运行JUnit测试类。测试失败,出现以下错误:Java-assertEquals&;assertTrue-测试失败,JUnit中出现异常[null],但在测试类中通过,java,exception,junit,null,assert,Java,Exception,Junit,Null,Assert,我有一个带有main方法的标准测试类和一个JUnit类,在通过测试驱动开发编写联系人目录时,我将使用它作为测试的基础。我需要使用assertEquals和assertTrue等方法。因为我以前从未使用过它们,所以我在标准测试类中编写了一个简单的测试,它们在预期时返回True,在预期时抛出异常 然后我进入我的JUnit测试类,编写在标准测试类中通过的相同测试并运行JUnit测试类。测试失败,出现以下错误: Test[Method Name] failed with exception [null]
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());
返回测试[Method Name]失败,出现异常[null]。在测试之前,您似乎得到了一个null指针
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();
List entries=main.cSearchFirst(“Ben”)//检查此处是否为空,以及大小
条目e=条目。获取(0)//再次检查此处的null,检查调试器中的属性
字符串s=e.getfName();
在那里安装一个调试器,并仔细查看抛出null的位置
编辑:我还建议,如果您预期为null,则检查周围是否为null,否则请尝试/捕获null异常并使测试失败 您需要向我们展示更多的代码(两个类中的整个测试方法)。希望这会有所帮助。如果您不知道如何将main.cSearchFirst(“Ben”).get(0).getfName()作为单个表达式进行调试,请将其拆分为各个中间变量,以查看哪个级别为null。这里没有JUnit的具体内容。我只是添加了一些代码,如果这有助于你的怀疑的话?那是个意外。更新以反映真实代码。不过,谢谢你迄今为止的帮助。如果还有更多,我们将不胜感激!Ben“.equals(testStuff)在测试类中也返回True。我已经再次更新了代码,将其更改为main。所有“朋友”都应该读“main”。@user2962713好的,你尝试过我以前的更改吗?将“main.cSearchFirst(“Ben”).get(0).getfName()”分为不同的步骤,并遍历可能为null的地方?