XStream: 无法通过抽象 class 的实现访问字段
XStream: could not access field with implementation of abstract class
在我的项目中,我使用 XStream 来 serialize/deserialize 我的实体。
在应用程序中一切正常,但当我尝试创建一些单元测试时却不行。
我有一个抽象 class A
带有字段 name
和 public 访问器。我有一个扩展 A
的 class B
。
我的XStream配置是这样的:
XStream xStream = new XStream();
//
xStream.alias("classNameSerialized", AnotherClass.class);
xStream.aliasAttribute(AnotherClass.class, OBJECT_ATTRIBUT_VERSION, OBJECT_ATTRIBUT_VERSION);
...
//
xStream.alias("classNameSerialized", B.class);
xStream.aliasAttribute(B.class, "name", "name");
当我运行我申请的时候,没有问题。但是当我尝试创建单元测试时,XStream 触发异常:IllegalArgumentException: could not access org.mycompagny.B.name field: name
EDIT
我在测试中尝试了 B.class.getDeclaredField("name");
,但它抛出了同样的异常。但是当我尝试 A.class.getDeclaredField("name");
时没有问题。我知道这可能是反射的问题,但我不明白的是为什么这个问题只出现在我的单元测试中而不出现在我的应用程序中......
最后一个问题是如何我可以测试这段代码吗???
为了解决我的问题,我不得不删除我的摘要 class...
在我的情况下,这不是一个大问题,只有 5 classes 从摘要继承class.
如果有人有更好的解决方案,post 在这里 ;-)
在我的项目中,我使用 XStream 来 serialize/deserialize 我的实体。
在应用程序中一切正常,但当我尝试创建一些单元测试时却不行。
我有一个抽象 class A
带有字段 name
和 public 访问器。我有一个扩展 A
的 class B
。
我的XStream配置是这样的:
XStream xStream = new XStream();
//
xStream.alias("classNameSerialized", AnotherClass.class);
xStream.aliasAttribute(AnotherClass.class, OBJECT_ATTRIBUT_VERSION, OBJECT_ATTRIBUT_VERSION);
...
//
xStream.alias("classNameSerialized", B.class);
xStream.aliasAttribute(B.class, "name", "name");
当我运行我申请的时候,没有问题。但是当我尝试创建单元测试时,XStream 触发异常:IllegalArgumentException: could not access org.mycompagny.B.name field: name
EDIT
我在测试中尝试了 B.class.getDeclaredField("name");
,但它抛出了同样的异常。但是当我尝试 A.class.getDeclaredField("name");
时没有问题。我知道这可能是反射的问题,但我不明白的是为什么这个问题只出现在我的单元测试中而不出现在我的应用程序中......
最后一个问题是如何我可以测试这段代码吗???
为了解决我的问题,我不得不删除我的摘要 class...
在我的情况下,这不是一个大问题,只有 5 classes 从摘要继承class.
如果有人有更好的解决方案,post 在这里 ;-)