如何正确单元测试parcelable对象?

时间:2015-05-06 19:47:42

标签: java android unit-testing junit

我想知道单独测试Android parcelable对象的最佳方法是什么。我知道如何使用Parcel.obtain()测试parcelable对象并将其写入包裹并使用创建者创建它。此方法的问题是,如果有人向对象添加字段而不将其添加到parcelable / equals / hashcode逻辑,则无法捕获。是否存在用于确认所有对象字段都写入包裹的库或方法?我知道并非所有字段都应该被分区,我设想一个注释或每个字段的内容来确定是否应该包含在单元测试中。

1 个答案:

答案 0 :(得分:0)

您可以使用EqualsBuilder.reflectionEquals

中的Apache Commons Lang

build.gradle

testCompile 'org.apache.commons:commons-lang3:3.4'

然后,您可以指定要忽略的字段或忽略transient字段

User one = new User();
one.setName("Salem")
one.setLastName("Saberhagen");
one.setAddress("Somewhere");
one.setAge(1000);

User two = one.clone();
two.setAddress("Mars");
two.setAge(2000);

reflectionEquals(one, two); // -> False
reflectionEquals(one, two, "address", "age"); // -> True