Java断言相同的值,但有错误
我正在处理两个列表,并尝试使用contains()。我没有打破惯例,但对于contains的类用法仍然是错误的 物品类别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(); ....
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指出的相等检查 只有在满足某种截止日期的情况下,才能发布,这样就不会在上面的编辑中出现运行时或编译器错误。