HashMap возвращает «ноль» для теста jUnit - PullRequest
0 голосов
/ 12 июня 2019

Я работаю над домашним заданием по Java, где мы должны создать «Класс проекта», а затем заполнить указанные методы, чтобы они работали, это будет проверено классом jUnit.

Итак, у меня есть мой проекткласс, подобный этому:

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;
    }
 }

, затем метод createProject, такой как:

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;
}

и тестовый класс jUnit:

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 результат:

org.opentest4j.AssertionFailedError: expected: <[p1]> but was: <[p1,p2]>

1 Ответ

1 голос
/ 12 июня 2019

Вы должны понимать, что assertEquals ведет себя так же, как assertSame, когда метод equals не переопределяется. Обновите свой тест, чтобы проверить размер коллекции и / или каждого элемента коллекции следующим образом:

 assertEquals(al.size(),api.getProjectNames().size());
 assertTrue(al.containsAll(api.getProjectNames()));

Обращаем ваше внимание, что порядок коллекций может варьироваться и все же пройти тест. Если вам нужен также соответствующий порядок, сортируйте коллекции и проверяйте каждый элемент по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...