我正在学习单元测试,我对测试的内容以及与他们一起去的边界感到困惑 .
所以这个问题的答案非常明确 - https://stackoverflow.com/a/1257583/445330
对我来说突出的一点是“它与数据库对话” .
在我正在学习的特定系统中,我需要测试xml树中的特定节点 - 表示为对象 .
除了加载此对象,我如何测试此值的存在 - 或者我是否混淆了单元测试和功能测试?
我正在学习单元测试,我对测试的内容以及与他们一起去的边界感到困惑 .
所以这个问题的答案非常明确 - https://stackoverflow.com/a/1257583/445330
对我来说突出的一点是“它与数据库对话” .
在我正在学习的特定系统中,我需要测试xml树中的特定节点 - 表示为对象 .
除了加载此对象,我如何测试此值的存在 - 或者我是否混淆了单元测试和功能测试?
3 回答
您要链接的答案的要点是
因此,只要您的XML树以编程方式创建并存储在内存中,而不是从文件系统(或任何其他外部资源)加载,您就可以正确地执行它 .
以编程方式创建XML树可能很笨拙,因此您可以做的是将树作为XML文件存储在与测试相同的包中,然后加载它们
它不计入外部资源,因为它是从测试套件的类路径加载的 .
如果这只是一个单元测试,那么您正在测试正在读取xml树的代码并检查树是否符合您的预期 . 您可以通过多种方式加载测试对象 . 一种方法是让单元测试将对象构建为测试设置的一部分 . 另一种方法是将xml树的测试版本存储在一个平面文件中(与测试类一起),并让测试在测试时解析文件 .
关键是测试的输入需要是一个控件,而不是取决于某些外部资源(如数据库)的状态 .
在我的测试中,我不仅对特殊功能进行了一次,而且进行了越来越多的测试,因此单元测试是可能性的一部分 . 我选择特定情况例如在一个除法中我使用0作为操作数,单操作数等,具体数值区间的限制,也是正常情况 . 所有测试都是可预测的,因此当我更改代码时,案例的执行可确保所做的更改的稳定性 .
在你的情况下,我认为你正在做一个单元测试 .
我接受维基百科对单元测试和功能测试的定义 .
功能测试很广泛,并且是面向程序的 . 单元测试面向可测试代码的最小部分,并且应该尽可能通用 .
在您的特定情况下“在我正在学习的特定系统中,我需要测试xml树中的特定节点 - 表示为对象”如果函数的结果是对象,则应该有一个众所周知的输入字符串,文件,对象静态定义,以及断言特定输入的输出是具有特定节点的对象,或者更好地提取返回对象,提取特定节点并断言特定节点应该等于特定值/对象
我希望有用