在PHPUnit中需要本地文件

时间:2012-03-23 19:37:44

标签: phpunit

我正在尝试使用旧的基于Web的遗留代码使用PHPUnit来测试我们的源代码树,尝试尽可能少地进行更改。一旦测试到位,我就可以更改库函数以便更好地使用,并进行更好的单元测试。但是,我需要进行测试以允许我更改它。

问题:我们在应用程序的许多项目中共享库代码,但它们都共享一个公共目录结构。当网站运行时,当我们需要库中的文件时,本地目录可用。

考虑一下:

APP1
APP2
Library
Library/COMM
Library/UTIL
...

启动应用程序时,您可以为不同的应用程序指向APP1或APP2。他们有公共代码(消息,数据库访问等)。在图书馆。问题是,库中的函数需要特殊的参数来工作,因为它们今天被编码。这些库只需要('Config.php');因为它可以在APP1或APP2中找到(它们都有一个具有特定应用程序的设置),并且当Library文件需要()时,Web服务器使用APP1或APP2作为目录。

虽然这有效,但在尝试在PHPUnit中运行代码时会失败。我的问题是如何包含Config.php文件,而不必在测试到位之前过多地更改遗留代码。

我知道这是错误的格式,但这是我继承的。

我不能简单地要求('../../ APP1 / Config.php');因为两个应用程序共享此库。

非常感谢任何建议。

注意:在我们开始编写测试时,我们正在尝试测试库和所有项目,因此不确定include_path是否会解决它。我正在为每个应用程序考虑不同的PHPUnit.xml.dist文件,但是由于公司对立即测试所有应用程序的影响而试图避免这种情况。

1 个答案:

答案 0 :(得分:1)

从phpunit.xml(< phpunit bootstrap =“./ bootstrap.php”> ...)和cli(--bootstrap ./bootstrap.php)中,您可以指定引导程序文件。在该文件中,您可以执行此操作。

作为建议,当说明测试遗留代码库时,不要从单元测试开始。你的第一个目标应该是“实现某种自动化测试”。对于大多数人来说,这将是系统测试。这是测试堆栈/站点的整体。常见的工具是Selenium

这仍然不是一项小任务。您将要做的就是“如何将我的系统置于一致的状态”。您可能需要做的第一件事是自动导入和清空数据库中的测试数据。一旦你能做到这一点,你将能够可靠地运行自动化测试。你需要让许多其他东西保持一致,日期和时间都是一个很好的例子。

我的观点是,从经验来看,从单元测试开始不会为您提供证明自动化测试值得付出所需的价值。

祝你好运!