mysqldump xml格式和dbunit预期在phpunit测试中的xml格式

我正在使用dbunit进行phpunit测试.这是我第一次在php上测试.

我通过这个命令创建xml:

mysqldump --xml -t -u username -p database > seed.xml 

之后根据doc xml应采用以下格式:

<?xml version="1.0" ?>
<dataset>
    <guestbook id="1" content="Hello buddy!" user="joe" created="2010-04-24 17:15:23" />
    <guestbook id="2" content="I like it!" created="2010-04-26 12:14:20" />
</dataset>

但在我生成的xml中,它看起来像:

 <?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="demo_app">
    <table_data name="test">
    <row>
        <field name="id">1</field>
    </row>
    </table_data>
    <table_data name="test2">
    <row>
        <field name="id">1</field>
        <field name="name">asdas</field>
    </row>
    <row>
        <field name="id">2</field>
        <field name="name">asDASD</field>
    </row>
    </table_data>
</database>
</mysqldump>

当我试图在我的测试类中运行它时:

$this->createMySQLXMLDataSet('seed.xml');

我收到此错误:

PHPUnit_Extensions_Database_Exception: The root element of a flat xml data set file must be called

我使用的是phpunit 4.1.0和dbunit 1.3

如何以预期的格式生成xml或如何摆脱此问题?

解决方法:

您引用的文档中的格式是针对Flat XML Dataset的,这与使用createMySQLXMLDataSet()时的预期不同.

但是,从您的错误来看,似乎您实际上错误地调用了createFlatXmlDataSet().

您应该在createMySQLXMLDataSet()调用中引用您使用mysqldump生成的文件.

上一篇:java – 服务层测试:使用dbUnit时是否仍然是单元测试而不是模拟本机Spring域层?


下一篇:java – 使用dbUnit模拟触发器