所以我的Project类是这样的:
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;
}
}
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;
}
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]>
发布于 2019-06-13 03:27:46
您必须了解,当equals方法未被覆盖时,assertEquals的行为方式与assertSame相同。更新您的测试以检查集合的大小和/或集合的每个元素,如下所示:
assertEquals(al.size(),api.getProjectNames().size());
assertTrue(al.containsAll(api.getProjectNames()));
请注意,集合的顺序可能会有所不同,但仍然可以通过测试。如果您还需要顺序匹配,请对集合进行排序,并逐个检查每一项。
https://stackoverflow.com/questions/56568918
复制相似问题