9

我是单元测试的新手,所以我想听听一些更熟悉的人的意见。

我需要尽快编写一些屏幕抓取代码。目标系统是一个 web ui,其中将涉及大量的 HTML 解析和类似的易失性。我永远不会被目标系统通知任何更改(例如,他们在他们的网站上进行了重新设计或以其他方式更改功能)。所以我预计我的代码会定期中断。

所以我认为我真正的问题是,我的单元测试有多少(如果有的话)应该担心或处理界面(我正在抓取的网站)的变化?

我认为无论是否进行单元测试,我都需要在运行时进行大量测试,因为我需要确保我使用的数据是原始的。即使我在每次运行之前运行单元测试,Web UI 仍然可能在测试和运行时之间发生变化。

那么我是否专注于代码内测试和异常处理?这是否意味着要划清界限,将这种测试完全排除在单元测试之外?

谢谢

4

3 回答 3

7

单元测试应始终设计为具有可重复的已知结果。

因此,要对屏幕抓取工具进行单元测试,您应该针对一组已知的 HTML 编写测试(您可以使用模拟对象来表示这一点)

你所说的那种事情对我来说听起来并不像单元测试的场景 - 如果你想确保你的代码尽可能健壮地运行,那么正如你所说,更多的是关于代码内测试和异常处理。

我还会包含一些警报代码,因此他们的系统可以让您了解 HTML 未按预期解析的任何情况。

于 2009-12-08T16:53:25.130 回答
2

你应该尽量分开你的测试。使用执行实际代码的低级别测试(即通过模拟浏览器)测试数据处理。

在模拟浏览器中,只需确保在您单击按钮、提交表单以及点击链接时发生正确的事情。

永远不要尝试测试布局是否正确。

于 2009-12-08T16:54:22.867 回答
1

我认为单元测试在这里可能有用的是,如果你有一个构建服务器,它们会提前警告你代码不再有效。您无法编写单元测试来证明如果站点更改其 HTML 屏幕抓取仍然有效(因为您无法判断它们会更改什么)。

您也许可以编写一个单元测试来检查您的努力是否返回了有用的东西。

于 2009-12-08T16:52:32.490 回答