我有很多类Serializable
/ Externalizable
,不幸的是,我经常忘记在将一个新字段添加到某个类或错误拼写时{{1而不是readObject
。所以我决定写一些被忽略的单元测试,并且不会被readDouble
运行。这只是为了我自己的需要。它看起来像这样:
maven-surefire-plugin
但问题是如何比较所有不是@Test(enabled = false)
public void testEquality(Object o){
String oPart = o.toString();
try (FileOutputStream fos = new FileOutputStream("/home/myusr/testser/" + oPart);
ObjectOutputStream ous = new ObjectOutputStream(fos)) {
ous.writeObject(o);
} catch (FileNotFoundException | IOException e) {
e.printStackTrace();
}
Object oo = null;
try (FileInputStream fis = new FileInputStream("/home/myusr/testser/" + oPart);
ObjectInputStream ois = new ObjectInputStream(fis)) {
Object oo = ois.readObject();
} catch (FileNotFoundException | IOException | ClassNotFoundException e) {
e.printStackTrace();
}
// Need to compare all non-transient fields of o and oo
}
的字段和同名字段。我不想仅仅为了测试目的而覆盖transient
方法。
有办法解决吗?也许有一些equals
/ commons
库可以解决这个问题。
答案 0 :(得分:2)
您可以使用反射来从YourClaas.class.getDeclaredFields()
开始。然后,您必须过滤返回的字段,从对象中检索值并进行比较。