单元测试 - 困惑

时间:2013-01-04 20:16:48

标签: unit-testing testing junit tdd phpunit

我正在学习单元测试,我对测试的内容以及与之相关的边界感到困惑。

所以这个问题的答案非常明确 - https://stackoverflow.com/a/1257583/445330

对我来说突出的一点是“它与数据库对话”。

在我正在学习的特定系统中,我需要测试xml树中的特定节点 - 表示为对象。

除了加载此对象外,我如何测试此值的存在 - 或者我是否混淆了单元测试和功能测试?

3 个答案:

答案 0 :(得分:2)

您要链接的答案的要点是

  

单元测试不依赖于外部资源。

只要您的XML树以编程方式创建并存储在内存中而不是从文件系统(或任何其他外部资源)加载,您就可以正确地执行它。

以编程方式创建XML树可能很笨拙,因此您可以做的是将树作为XML文件存储在与测试相同的包中,然后使用

加载它们。
this.getClass().getClassLoader().getResourcesAsStream(name);

不计入外部资源,因为它是从测试套件的类路径加载的。

答案 1 :(得分:0)

如果这只是一个单元测试,那么您正在测试正在读取xml树的代码并检查树是否符合您的预期。您可以通过多种方式加载测试对象。一种方法是让单元测试构建对象作为测试设置的一部分。另一种方法是将xml树的测试版本存储在一个平面文件中(与测试类一起),并让测试在测试时解析文件。

重点是测试的输入需要是一个控件,而不是取决于某些外部资源(如数据库)的状态。

答案 2 :(得分:0)

在我的测试中,我不仅对特定功能进行了一次,而且进行了越来越多的测试,因此单元测试是可能性的一部分。我选择特定情况例如在一个除法中我使用0作为操作数,单操作数等,具体数值区间的限制,也是正常情况。所有测试都是可预测的,因此当我更改代码时,案例的执行可确保变更的稳定性。

在你的情况下,我认为你正在做一个单元测试。

我接受维基百科对单元测试和功能测试的定义。

功能测试很广泛,并且是面向程序的。单元测试面向可测试代码的最小部分,并且应尽可能通用。

在您的特定情况下“在我正在学习的特定系统中,我需要测试xml树中的特定节点 - 表示为对象”如果函数的结果是对象,则应该有一个众所周知的输入字符串,file,object static defined,以及断言特定输入的输出是具有特定节点的对象,或者更好地提取返回对象,提取特定节点并声明特定节点应该等于特定值/对象

我希望有用