如何避免集成测试中的BusinessLogic重复

时间:2011-01-24 23:54:46

标签: unit-testing testing integration-testing

我有一个返回产品更改历史记录的Web服务方法,它的签名如下:

List<MyProduct> GetProductHistory(int iProductId);

我想为此方法创建一个INTEGRATION测试。为此我需要在DB中创建一些数据。在这里,我可以创建一个函数,在DB中写入一些“硬编码”记录,模拟产品变更历史记录。

我还需要测试其他函数(int GetProductAverageValue(int iProductId)),它应该使用产品历史信息进行一些数据处理。为了测试这个功能,我需要有几组记录(几种不同的历史类型)。在这里,我几乎没有选择:

  1. 创建一些不同的硬编码数据集(每个测试用例)(那里有很多数据,因此这些集有点可怕);
  2. 在我的集成测试中创建一些功能,为产品创建所需的历史记录......
  3. 第一个选项非常可怕,第二个 - 导致在集成测试层上重复业务逻辑...

    请指教。欢迎任何想法...

2 个答案:

答案 0 :(得分:2)

  

那里有很多数据,所以这些设置有点可怕

我不太明白这里的困难是什么。也许你可以澄清为什么这是可怕的?

当完全测试某些代码所需的测试用例数太大时(总是真实程序的情况),使用equivalence partitioning选择较少数量的测试用例尽管如此,仍然彻底测试了代码。

您已经明确表示这是针对集成测试的。你已经有彻底的单元测试吗?如果没有,先创建它们。然后集成测试不再需要测试业务逻辑;他们只需要测试组件是否正确粘合在一起。这不应该需要大量的测试用例。如果是这样,请考虑重新设计代码以引入中间级别的程序集(facade),您可以在没有数据库的情况下进行测试。

答案 1 :(得分:0)

这是我今天的第二个问题......在完成问题写作时我自己找到了解决方案。

要创建'良好的产品更改历史记录',我需要使用实际更改产品的服务方法。简单快捷:)

P.S。无论如何,欢迎任何意见和建议。