JUnit - 如何为文件解析方法编写测试?

时间:2011-05-19 13:59:18

标签: java android file-io junit tdd

我是测试开发的新手,并试图打破我的非tdd习惯。

我的应用程序中的大多数功能性可测试代码都与数据库i / o或文件读/写有关。 Android为处理数据库测试提供了一些扩展,但是我对如何编写用于读取示例文件的测试感到很遗憾。

以下是我的应用程序示例:XML导入。

方法parseXML()读取具有相当简单模式的文件,并直接将其内容写入数据库。有几种子方法可以解析不同节点的内容(即parseNote()parseList())。

我是否必须提供样本文件?如果是这样的话?我该如何开始测试这样的代码?

修改 样本文件:

<lists>
<list title="Sample List">
<note title="Note 1" details="Details 1"/>
<note title="Note 2" details="Details 2"/>
<note title="Note 3" details="Details 3"/>
</list>
</lists>

3 个答案:

答案 0 :(得分:2)

很难对将信息保存到数据库的部分进行单元测试,因为这样做会要求您启动并运行数据库。使用单元测试,您希望避免像瘟疫这样的依赖。

相反,您应该做的是测试解组过程 - 也就是说,您的代码是否正确地从XML文档中提取数据。创建一个类,其唯一目的是保存解析的XML数据(仅具有属性和getter / setter的POJO / bean类)。让您的parseXML()方法将所有数据抛入此类并返回它(它不应该将任何内容保存到数据库中)。然后,所有单元测试必须检查以确保对象的属性具有正确的值。

就像@ Woot4Moo所说,你还应该测试该方法如何处理意外错误,如不存在的文件或非XML文件。

此外,如果您的XML遵循架构,您可能需要查看JAX-B。这是一个框架,它将自动从XML文档创建Java bean对象,因为XML文档遵循模式。您不必自己编写任何解析代码。

答案 1 :(得分:0)

您要测试的内容如下:

  1. 正确形成的XML文件
  2. 格式错误的XML文件
  3. &gt; XML文件2GB
  4. 不存在的XML文件
  5. 保存为txt文件的XML文件(这实际上只显示您不依赖于扩展名)

答案 2 :(得分:0)

我会模拟数据库并测试解析器在提供XML片段时是否正确地与其进行交互。或者,如果您不熟悉模拟框架,则可以将XML解析为中间的“值”类(所有最终字段)并执行相等的断言。

您可以使用XML构建器类创建这些代码段。对于基本的解析和构建XML文件,使用预先存在的DOM库比自己编写它更容易。