xml - 在 XML 配置文件存在差异的不同操作系统上运行 PHPUnit

标签 xml configuration phpunit

在运行时处理的 PHPUnit XML 文件中是否可能存在配置差异,以便根据执行平台配置设置?例如,在 Ubuntu 上使用 Color,但在 Windows 中则不行。

解释一下:

我使用了不同的开发平台,并且希望确保我们的代码适用于任一平台上的 Web 服务器。此外,我们使用的工具位于不同的平台上。例如,开发人员的内部后端服务器(PHPUnit、PHPDocs、Wiki、其他工具)位于 Ubuntu 计算机上。开发人员积极使用基于 Windows 的 PC。

当开发人员更改代码时,我们希望他们能够在将代码 checkin 我们的存储库之前测试其代码是否有效。因此,他们在本地计算机上运行 PHPUnit、PHP_CodeSniffer、PHPMD 和 PHPDocs,以查看是否可以提交。

然后,主系统将看到提交的代码,并将结合 Ubuntu 计算机上其他人的代码更改重新运行这些测试,更新公司范围内的测试结果、代码覆盖率等页面...这些测试甚至可以在具有不同操作系统/语言配置的不同计算机上运行。此时也开始通过 Selenium 进行 Web 浏览器测试,同样,跨许多不同的 Web 服务器/操作系统/浏览器版本。

随着我们引入新工具、不同的项目等...,XML 文件会随着排除文件、测试套件配置等而发生变化...因此,我们将此文件保留在源代码树中,以确保开发人员拥有运行测试时的最新设置。

我希望能够按平台不同地配置一些设置(这适用于我们的所有组合,因为我可以设置正在使用的任何变量),而不必在源之后复制不同的文件以确保更改已收到。

这合理吗?或者使用 Jenkins 之类的东西可以帮助我避免这个问题吗?不过,我试图让 Windows PC 上的工具尽可能基本,以便于开发人员快速运行它们,否则他们会忽略该步骤。

最佳答案

这个答案比预期的要长,但很合适。快速的答案是构建不同的配置文件。 phpunitwindows7.xml

phpunitubuntu.xml

phpunitmacosx.xml

等等...

但我认为你的问题是,有太多不同的配置,这样做会需要大量维护,所以我首先要做的是使用我想要的设置构建一个对象。将基本 phpunit.xml 加载到 SimpleXML对象

$sxe = simplexml_load_file('phpunit.xml);
// Modify a node
$sxe->phpunit = '<tessuites....>';

// You can access an element's attribute just like this :
$attribute = $sxe->phpunit->attributes()->$att;

$sxe->phpunit->attributes()->$verbose = $phpunitSettings->verbose;

// Saving the whole modified XML to a new filename
$sxe->asXml('windows7-cookie-cutter-phpunit.xml');

每个开发人员都会根据他们的操作系统/项目等将其构建配置设置为适当的 phpunit 配置文件。

Jenkins 当然会帮助您做到这一点,因为您可以在 Ant 构建文件中运行此脚本,以在 phpunit 运行之前更新这些 phpunit 配置文件,而不是手动运行它。

您可以做的另一件事是使用

<?php 
    header ("Content-Type:text/xml");
?>

显示这样的动态文件

<phpunit setting="<?php echo $setting; ?>"

><!-- yada yada-->
</phpunit>

动态文件仍然需要通过 php 脚本访问,但可以使用 cUrl 轻松完成以获取内容 exe:

http://yoursite.com/apps/phpunit-config.php?os=windows7&project=cookiecutterblog

此外,如果您在开发人员计算机上安装了 jenkins,则可以将其设置为使用 Poll SCM 每小时/每天运行一次,因此他们是否想使用它并不重要,即使他们不知道,它仍然会被使用它!

enter image description here

如果您在 eclipse 中使用 MakeGood 扩展,您可以预加载脚本来更新 phpunit 配置文件。

make good

每次编辑文件然后保存时,都可以在 IDE 中加载并轻松运行 enter image description here

这是一个MakeGood IDE setup tutorial我把它们放在一起。

我不确定开发人员是否会更容易,因为他们根本不会做任何事情......

关于xml - 在 XML 配置文件存在差异的不同操作系统上运行 PHPUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019249/

相关文章:

sql-server - 生成子节点中没有默认命名空间的 XML

c# - 如何以编程方式使自动生成的文件成为 Visual Studio 中的嵌入式资源?

c# - 从后代获取 xml 元素列表

validation - 如何验证温莎城堡的配置

scala - Intellij Idea - Scala 使用什么配置

java - 当使用 Jackson XmlWrapper 在类里面排名第二时,无法反序列化(转换)未包装的列表

configuration - 如何恢复到 OpenWrt 路由器配置?

unit-testing - 使用 reCaptcha 测试表单提交的安全和标准方法是什么?

mocking - 模拟类 : methods hinting

php - 如何使用过程代码库在 PHP 中编写单元测试?