如何存根/模拟XMLBeans对象进行测试?

时间:2012-07-31 09:53:01

标签: java unit-testing mocking xmlbeans stubbing

我正在使用Apache XMLBeans的应用程序(扩展org.apache.xmlbeans.XmlObject的XML结构元素的接口,扩展org.apache.xmlbeans.impl.values.XmlComplexContentImpl的那些接口的实现)

我有以下功能:

  • 将XML对象传递给包含一些数据的方法
  • 根据此数据,为此XML对象生成子内容
    • 使用XML对象的addFoo()添加元素等

现在我想测试一下这个功能,但是我不确定这个XML对象的最佳测试方法是什么(我希望stub / mock对象能够保持子树状态为容易测试)。一些选择:

  • 我尝试了实例化这些FooImpl实现对象,但它们需要引用org.apache.xmlbeans.SchemaType sType
    • 有没有办法实例化这些?
    • 当添加内容时,给出null / mocked SchemaType会以NPE结束
  • 使用所需的几个方法生成存根类会起作用,但最终会生成许多(> 100)方法来生成
  • 使用Mockito可以正常工作,但要轻松测试xml树结构状态,我需要使用doAnswer()等

一些想法?

br,Touko

2 个答案:

答案 0 :(得分:3)

发现自己答案非常简单:xmlbeans接口具有用于实例化bean的工厂类,例如:

Address.Factory.newInstance()

答案 1 :(得分:2)

我知道这不是你正在寻找的答案,但无论如何它仍然存在:

不要模拟你无法控制的类型

参考文献:

问题:你想测试什么? Apache XML bean按预期工作?或者您正在编写XML工具吗?