我是测试开发的新手,并试图打破我的非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>
答案 0 :(得分:2)
很难对将信息保存到数据库的部分进行单元测试,因为这样做会要求您启动并运行数据库。使用单元测试,您希望避免像瘟疫这样的依赖。
相反,您应该做的是测试解组过程 - 也就是说,您的代码是否正确地从XML文档中提取数据。创建一个类,其唯一目的是保存解析的XML数据(仅具有属性和getter / setter的POJO / bean类)。让您的parseXML()
方法将所有数据抛入此类并返回它(它不应该将任何内容保存到数据库中)。然后,所有单元测试必须检查以确保对象的属性具有正确的值。
就像@ Woot4Moo所说,你还应该测试该方法如何处理意外错误,如不存在的文件或非XML文件。
此外,如果您的XML遵循架构,您可能需要查看JAX-B。这是一个框架,它将自动从XML文档创建Java bean对象,因为XML文档遵循模式。您不必自己编写任何解析代码。
答案 1 :(得分:0)
您要测试的内容如下:
答案 2 :(得分:0)
我会模拟数据库并测试解析器在提供XML片段时是否正确地与其进行交互。或者,如果您不熟悉模拟框架,则可以将XML解析为中间的“值”类(所有最终字段)并执行相等的断言。
您可以使用XML构建器类创建这些代码段。对于基本的解析和构建XML文件,使用预先存在的DOM库比自己编写它更容易。