我需要在我的测试套件中添加集成测试.虽然名称是PHPUnit,但我发现在这里运行非单元测试有很多支持.我的布局是这样的:
lib/
Foo/
Component.php
tests/
lib/
Foo/
ComponentTest.php
resources/
fixtures/
(我认为)有三种方法可以在这里添加高于单位水平的测试:
添加并行结构
tests/
unit/
lib/
Foo/
ComponentTest.php
integration/
lib/
Foo/
ComponentTest.php
resources/
fixtures/
这应该有效,除非现在没有1:1类:测试类关系可能(并且可能会)混淆Netbeans.
添加< root> /tests/lib/Foo/ComponentIntegrationTest.php
与上面相同的问题,目录较少.
将测试添加到现有测试类,使用@group integration等符号
这保持了1:1的关系,但却增加了测试套件的复杂性.此外,由于需要在不断变化的环境中调用SUT,我不能只重用单元测试中的_setup().
想法?
解决方法:
单元测试用于单独测试单个单元(类).集成测试旨在将多个单元一起测试.因此,类和它们所属的集成测试之间可能不会有1:1的相关性.
我将创建一个单独的目录结构 – 甚至可能是一个单独的项目 – 来容纳集成测试. NetBeans将无法打开类所属的“测试”,因为它将属于多个测试,但它将继续打开其匹配的单元测试.
我们使用Selenium为我们的集成测试(在我到达之前称为健全性测试)有一个单独的项目,到目前为止它运行良好.
更新
我们的集成测试的目录布局非常简单:每个站点一个目录.我们为站点提供了一个代码库,并使用视图来允许单个站点覆盖布局(不仅仅是换肤).我们没有像我想的那样在这些测试上花费太多时间.我们使用Selenium在将站点推送到临时服务器后运行测试.我还没有机会将它们连接到我们的持续集成服务器(Jenkins),但那将是理想的.
我建议您在网站上按功能区或模块进行组织.大多数情况下,这取决于您如何看待您正在测试的项目.示例可能如下所示:
src/
Model/
Cart.php
...
tests/
unit/
phpunit.xml
bootstrap.php
Model/
CartTest.php
...
integration/
account/
login/
register/
subscriptions/
products/
listing/
details/
search/
cart/
shop/
checkout/
标签:php,layout,phpunit,integration
来源: https://codeday.me/bug/20190518/1126901.html