2012-07-24 128 views
2

我有一个单元测试,这里的价值讨论:单元测试逻辑,集成测试数据

Why should I bother with unit testing if I can just use integration tests?

但我想我可以从推断的是,单元测试是很好的谨慎逻辑方法,但是当数据被操纵时,你需要回到集成测试。

我遇到的问题是在现实世界的LOB应用程序中,他们所做的99%是操纵数据,那么这是否意味着典型应用程序只有1%适用于单元测试?

回答

1

当涉及到数据时,我仍然会使用单元测试。例如,当我在webapp中测试我的响应处理程序时,我不希望激发实际的ajax请求来测试我的处理程序。相反,我将一些示例json放在一个字符串中,然后将它传递给我的处理程序。

如果我正在编写从文件读取数据的应用程序,我的数据处理方法将与实际反序列化文件的代码完全分开。因此,在这种情况下,我可以将一些真实世界的数据传递给测试中的数据处理方法。

您将看到使用单元测试还会通知您的代码的设计。在这些例子中,处理数据的方法/类与我获取数据的方式完全分离(即解耦)。作为一个说明,我可能会在其中进行一些集成/功能测试以及良好的测量,但我完全不同意单元测试只适用于1%的概念。

2

集成测试只是测试,看看接口是否正在返回所期望的。单元测试是非常具体和非常小的测试,以确认内部工作。它们帮助揭示代码的黑暗区域,这对于集成测试非常困难。如果您永远不允许更改或重新使用正在测试的组件,那么集成测试非常棒。

单元测试可以让您对目前可能未使用的代码函数有信心,或者可能会遇到导致它们不正常或失败的奇怪情况。它有点像压力测试汽车的个别齿轮,而不是滥用整个汽车让他们失败。

在数据操作方面,如果您在进程中难以进行单元测试,那么它应该指向您,您没有将它模块化得足够好。

+0

我想我在说的是我正在测试单层数据访问方法,但是我已经从具有已知数据作为测试源的“示例”数据库中提取数据。这为从每个单元测试制作数据节省了时间。所以我认为这将是一个混合测试? – CodeGrue 2012-07-27 12:26:25