在我的项目中,我使用XStream来序列化/反序列化我的实体。
Everythings在应用程序中运行良好,但在我试图创建一些单元测试时却没有。
我有一个抽象类A
,其中包含字段name
和公共访问者。我有一个扩展B
的课程A
。
我的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
编辑
我试过我的测试{ {1}}它会抛出同样的异常。但是当我尝试B.class.getDeclaredField("name");
时,没有问题。我明白这可能是一个反思的问题,但我无法理解的是为什么这个问题只出现在我的单元测试而不是我的应用程序中...
最后一个问题是我怎么能测试这段代码???
答案 0 :(得分:0)
要解决我的问题,我必须删除我的抽象类...
在我的情况下,它不是一个大问题,只有5个类继承自抽象类。
如果有人有更好的解决方案,把它贴在这里; - )