很抱歉标题太长,但我的问题如下;
我有这些课程;
public class A {
int a1;
int a2;
List<B> listOfB;
}
和
public class B {
int b1;
int b2;
List<C> listOfC;
}
和
public class C {
int c1;
int c2;
}
如果只有B
断言它拥有的C
列表,我会使用以下自定义匹配器;Matcher
但是如何从
A
执行断言呢?我想在一个更大范围的匹配器中使用这个C
列表匹配器,它执行以下操作:;
匹配器。hasItems(allOf(hasProperty(“b1”,equalTo(b1))、hasProperty(“b2”,equalTo(b2))、hasProperty(“listOfC”,cMatcher)))
因此,在某种程度上,我希望将
B
列表中的B
与b1
和b2
值以及包含特定C
的listOfC
与c1
和c2
值相匹配。
虽然您可以创建一个复合Hamcrest匹配器,但您所面临的困难概括了您的测试方法的一个缺点。
德米特定律建议您将测试绑定到每个类,而不是其他类。
A
有一个正确的B
列表是可以的,但是那些C
s的行为完全取决于B
,应该属于它的测试。
很抱歉回答我自己的问题,但我最后给出的代码是正确的。内部列表C
的匹配器约束存在一些问题。
因此,要匹配列表中的列表;
匹配器
然后在更高范围的匹配器中使用它;
匹配器。hasItems(allOf(hasProperty(“b1”,equalTo(b1))、hasProperty(“b2”,equalTo(b2))、hasProperty(“listOfC”,cMatcher)))
将符合我在问题中描述的情况。
我遇到的问题是我的
C
类中的一个字段,它具有布尔类型,不知何故
hasProperty("boolField",true)
不匹配,说属性"boolField"不可读
。可能是因为Boolean的getter方法没有get
前缀,在这个问题中,它说基本布尔工作,而布尔对象在这种情况下失败
假设我有以下课程:
我得到和错误当我执行 错误是: 未处理的异常:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第52列路径$. f 这是 json 响应 我有这个班级 和这个其他
嗨,我有两个对象列表。清单1和清单2 App1中的员工列表 在sql中,我们可以很容易地通过ID列进行连接。但是这里要点击seperate API来阅读清单2。 我可以从清单2创建map,并将EmpId作为键,继续从map获取对象,并将详细信息设置到清单1。 想知道有没有更好的方法来做这件事。
我有一个gprsEvents列表,其中列表中的每个元素都是一个映射 ,如下所示。我需要: null 我开始考虑使用Java8Stream(groupingBy):gprsents.stream().collectors.groupingBy(Map->map.Get(“CallChargingID”).ToString())) 我现在坚持得到合适的结果,特别是在一个单一的地图和上面提到的字段的列表
我有两个对象列表,它们在两个列表中都有重复名称。我需要从清单2中删除清单1中的所有重复值。 下面是一个场景,类有名称变量,用这个变量需要检查清单1中的重复值并需要删除。 //这是具有3个对象的第一个列表 清单1大小为1 请建议我在Java8与流。
5.1.3 用对象表示复杂数据 程序是对数据进行操作的过程,因此数据表示和操作过程是编程时要考虑的两大问题。 我们已经熟悉用编程语言提供的数据类型来表示数据,例如用字符串表示雇员姓名,用整数表示年龄,用浮点数表示工资等。对于某些稍微复杂一点的数据我们也有适合的数据类 型来表示,例如雇员名单可以用一个字符串数据构成的列表来表示。当数据表示确定之后, 我们接着用各种数据类型所支持的数据操作来处理数据,