首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于jUnit测试,HashMap返回"null“

对于jUnit测试,HashMap返回"null“
EN

Stack Overflow用户
提问于 2019-06-13 03:11:23
回答 1查看 423关注 0票数 -1

所以我的Project类是这样的:

代码语言:javascript
复制
public class Project {

    private String name;
    private Calendar start=null;
    private Calendar end=null;


    public Project(Calendar start, Calendar end)
    {
        this.start=start;
        this.end=end;
    }
 }

代码语言:javascript
复制
public static final HashMap<String, Project> proj_map = new HashMap<>();


@Override
public boolean createProject(String projectName, Calendar startDate, Calendar endDate) {

    try {
        proj_map.put(projectName,new Project(startDate,endDate));
    } catch (Exception e)
    {
        return false;
    }
    return true;
}

public ArrayList<String> getProjectNames() {
    ArrayList<String> keys = new ArrayList<>(proj_map.keySet());
    return keys;
}

代码语言:javascript
复制
class CreateHappyPath{
    @Test
    void createProject() {
        assertEquals(true, api.createProject( "p1",new GregorianCalendar(2019,5,12), new GregorianCalendar(2019,6,13)));
        ArrayList<String> al =new ArrayList<String>();
        al.add("p1");
        assertEquals(al,api.getProjectNames());
    }

但是如果我运行这个,我的jUnit结果是:

代码语言:javascript
复制
org.opentest4j.AssertionFailedError: expected: <[p1]> but was: <[p1,p2]>
EN

回答 1

Stack Overflow用户

发布于 2019-06-13 03:27:46

您必须了解,当equals方法未被覆盖时,assertEquals的行为方式与assertSame相同。更新您的测试以检查集合的大小和/或集合的每个元素,如下所示:

代码语言:javascript
复制
 assertEquals(al.size(),api.getProjectNames().size());
 assertTrue(al.containsAll(api.getProjectNames()));

请注意,集合的顺序可能会有所不同,但仍然可以通过测试。如果您还需要顺序匹配,请对集合进行排序,并逐个检查每一项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档