Dal*_*vić 5 php integration layout phpunit
我需要在我的测试套件中添加集成测试.虽然名称是PHPUnit,但我发现在这里运行非单元测试有很多支持.我的布局是这样的:
<root>
lib/
Foo/
Component.php
tests/
lib/
Foo/
ComponentTest.php
resources/
fixtures/
Run Code Online (Sandbox Code Playgroud)
(我认为)有三种方法可以在这里添加高于单位水平的测试:
<root>
tests/
unit/
lib/
Foo/
ComponentTest.php
integration/
lib/
Foo/
ComponentTest.php
resources/
fixtures/
Run Code Online (Sandbox Code Playgroud)
这应该有效,除非现在没有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/
Run Code Online (Sandbox Code Playgroud)