带有许可证文件的单元测试产品

时间:2009-10-30 14:07:46

标签: nunit

我开始研究使用许可证文件的产品。需要读取(并验证)这些文件才能使应用程序正常工作。这会导致单元测试中出现一些问题,如果没有适当的许可证,它会抛出异常。

我们正在使用NUnit,我需要做的是:

  • 在运行测试之前,将许可证文件复制到卷影复制目录中。
  • 将工作目录设置为原始构建输出文件夹,以便文件名在临时测试文件夹中仍然有效。

我知道在单元测试中通常应避免文件访问,但在重构开始之前,我们需要进行单元测试,因此我需要这样做。

5 个答案:

答案 0 :(得分:1)

我认为你的目标是你的测试距离很远,你可以进一步编写测试功能。一次毯子测试并不是一个很好的方法,但我认为这是一个开始。尝试平衡尝试进行此测试所花费的时间,以及如何花费时间测试较小的更多目标工作单元。

答案 1 :(得分:1)

您需要编写一个模拟类来替换正在读取许可证文件的类。您可以使用MOQ来实现此目的。

答案 2 :(得分:1)

我建议你先阅读这本书:

  

Working Effectively with Legacy Code

它将为您提供有关如何打破此类问题的大量见解。将进行一定程度的更改以使这样的代码可以在没有测试的情况下进行测试,但是尽可能少地保持它并且非常小心地进行。

在您的情况下,由于注入伪造读取许可证的类太多了,您可以做的是更改验证许可证文件的类,以便实际验证逻辑在单个方法中 是从单个方法启动的,该方法告诉该类的其余部分许可证正常并使该方法成为虚拟,然后使用覆盖该方法的子类进行测试以假装它验证了该文件。

然后,一旦你对这个类进行了一些测试,就可以转储方法和子类,转而使用正确注入的类。

(编辑以回应验证复杂的事实)。

答案 3 :(得分:1)

禁用NUnit的卷影复制功能将使测试在内置的同一输出文件夹中运行。但这也会阻止新版本(因为文件正在使用中)。一个糟糕的解决方案,imo,但仍然是一个解决方案。

答案 4 :(得分:0)

没有必要回答您的问题,但通常在我们购买软件产品的许可证时,通常会提供某种类型的支持。只是打电话询问供应商是否有他们推荐的解决方案可能不是一个坏主意。