Java断言相同的值,但有错误

Java断言相同的值,但有错误,java,gradle,junit,Java,Gradle,Junit,我正在处理两个列表,并尝试使用contains()。我没有打破惯例,但对于contains的类用法仍然是错误的 物品类别 class Items implements Comparable<Items> { private String name; private Date date; private Lib.CLASSENUM type; public getDate(); public setDate(); ....

我正在处理两个列表,并尝试使用contains()。我没有打破惯例,但对于contains的类用法仍然是错误的

物品类别

 class Items implements Comparable<Items> {
     private String name;
     private Date date;
     private Lib.CLASSENUM type;

    public getDate();
    public setDate();

    ....
    public compareTo(Items o) {
     ...
    }
  }
类项实现可比较的{
私有字符串名称;
私人日期;
私有Lib.CLASSENUM类型;
公共getDate();
公共设置日期();
....
公共比较(项目o){
...
}
}
测试类

List<Items> actualList;
List<Items> expectedList;

public setup() {
     actualList = new ArrayList<>();
     expectedList = new ArrayList<>();
}

class Tests {
@Test
public void statusCheckValidatingRedLinePromotionItemsTest() {
    //this just sets the two ArrayList to clear
    clearProductMaps();
    Items goodsItem = new Items();

    goodsItem.setName("Product_A");
    goodsItem.setPrice(4.10);
    goodsItem.setStatus(Lib.CLASSENUM.ORIGINAL);
    goodsItem.setDate(date);

    actualList.add(goodsItem);
    goodsItem = new Items();
    goodsItem.settName("Product_A");
    goodsItem.setPrice(3.70);
    goodsItem.setStatus(Lib.CLASSENUM.PROMO);
    date = calendar.getTime();
    goodsItem.setDate(date);

    actualList.add(goodsItem);
    goodsItem = new Items();
    goodsItem.setName("Product_A");
    goodsItem.setPrice(3.70);
    goodsItem.setDate(date);
    goodsItem.setStatus(Lib.CLASSENUM.PROMO);
    expectedList.add(goodsItem);

    assertTrue(expectedGoods.get(0).contains(actualList.get(0));
}
List-actualList;
列表期望列表;
公共设置(){
actualList=新的ArrayList();
expectedList=新的ArrayList();
}
课堂测试{
@试验
public void statusCheckValidatingRedLinePromotionItemsTest()的状态检查{
//这只是将两个ArrayList设置为清除
clearProductMaps();
Items goodsItem=新项目();
goodsItem.setName(“产品A”);
goodsItem.设定价格(4.10);
goodsItem.setStatus(Lib.CLASSENUM.ORIGINAL);
goodsItem.设置日期(日期);
添加(goodsItem);
goodsItem=新项目();
goodsItem.settName(“产品A”);
goodsItem.设定价格(3.70);
goodsItem.setStatus(Lib.CLASSENUM.PROMO);
date=calendar.getTime();
goodsItem.设置日期(日期);
添加(goodsItem);
goodsItem=新项目();
goodsItem.setName(“产品A”);
goodsItem.设定价格(3.70);
goodsItem.设置日期(日期);
goodsItem.setStatus(Lib.CLASSENUM.PROMO);
expectedList.add(goodsItem);
assertTrue(expectedGoods.get(0).contains(actualList.get(0));
}
包含的内容应该是真的,不是吗?
(o==null?e==null:o.equals(e))

由于
包含(…)
数组列表的方法依赖于相等性检查,而不是
可比性
实现,因此无法获得匹配项

一旦在
Item
类中重写并实现
equals(…)
hashCode()
,测试就会通过


或者,您可以使用依赖于
comparerble
TreeSet
来代替
ArrayList
来检查包含性。

我注意到的一件事是您拼错了Comparable。Comparable作为一个接口处理自定义排序,而不是DasbLinkedLight指出的相等检查

只有在满足某种截止日期的情况下,才能发布,这样就不会在上面的编辑中出现运行时或编译器错误。