Unit testing 返回新的ArrayList时,将填充正在返回的列表,但仍会出现空指针异常

Unit testing 返回新的ArrayList时,将填充正在返回的列表,但仍会出现空指针异常,unit-testing,junit,nullpointerexception,mockito,powermockito,Unit Testing,Junit,Nullpointerexception,Mockito,Powermockito,我正在为一个方法编写一个JUnit测试用例,它将引导我找到另一个默认方法,当调用该默认方法时,它将返回一个新的ArrayList 试验方法 public List getTagDataForImage(String tagType, String imageType) { List tagRules = getTagRulesForUpdateOrQueryImage(tagType, imageType); List tagData = getTagData(t

我正在为一个方法编写一个JUnit测试用例,它将引导我找到另一个默认方法,当调用该默认方法时,它将返回一个新的ArrayList

试验方法

public List getTagDataForImage(String tagType, String imageType) {
        List tagRules = getTagRulesForUpdateOrQueryImage(tagType, imageType);
        List tagData = getTagData(tagRules);
        return tagData;
    }
在方法中,堆栈跟踪将我指向GetTagralesforUpdateorQueryImageTagType,imageType;这把我引向这里

List getTagRulesForUpdateOrQueryImage(String tagType, String imageType) {
        List commonList = tagList.getTagRulesForUpdateOrQueryImage(tagType
                + "," + imageTypes[0]); //This line 
        commonList.addAll(tagList.getTagRulesForUpdateOrQueryImage(tagType
                + "," + imageType));
        return commonList;
    }
tagList.getTagRulesForUpdateOrQueryImagetagType的定义 +,+图像类型[0];在另一个类中定义

List getTagRulesForUpdateOrQueryImage(String tagType) {
        return new ArrayList((List) tagRulesMap.get(tagType));//gives NPE
    }
tagRulesMap是一个HashMap,在构造函数调用时自动填充

测试用例

@InjectMocks 
    TagDataFilter tagDataFilter;
    @Test
        public void testGetTagDataForImage()
        {
            List get=tagDataFilter.getTagDataForImage("QueryImages", "Common");
        }
堆栈跟踪

java.lang.NullPointerException
    at java.util.ArrayList.<init>(Unknown Source)
    at data.TagList.getTagRulesForUpdateOrQueryImage(TagList.java:107)
    at data.TagDataFilter.getTagRulesForUpdateOrQueryImage(TagDataFilter.java:92)
    at data.TagDataFilter.getTagDataForImage(TagDataFilter.java:73)
    at data.test.TagDataFilterTest.testGetTagDataForImage(TagDataFilterTest.java:54)

我无法找出哪里出了问题。请帮助我解决此问题。

仅从评论中提供答案:

List getTagRulesForUpdateOrQueryImage(String tagType) {
    return new ArrayList((List) tagRulesMap.get(tagType));//gives NPE
}

找不到键标记类型,因此它返回null,然后尝试强制转换,然后返回NullPointerException

您的模拟TagDataFilter是否没有调用真正的构造函数?是的,它正在调用真正的构造函数。如何模拟标记列表依赖关系?我没有模拟它,因为当我调用测试类的构造函数时,会自动调用标记列表的构造函数。它是否包含您正在搜索的键的a值?如果找不到传递的键的值,ArrayList.get将返回null。。。