PHP单元测试:测试应该在与类相同的命名空间下吗?

Cza*_*ino 11 php phpunit namespaces

传统上,Symfony 2.0 bundle目录结构有一个Tests应该放置测试的目录.

Acme
    -> SomeBundle
        -> Controller
        -> Entity
        -> Service
        -> ...
        -> Tests
            -> Controller
            -> Entity
            -> Service
            -> ...
    -> OtherBundle
    -> ...
Run Code Online (Sandbox Code Playgroud)

我知道测试工作即使它们与他们测试的类没有相同的命名空间.

namespace Acme\SomeBundle\Service;

/**
 * Some service.
 *
 * @author varchar
 * @since  August 1, 2012
 */
class SomeService
{
}
Run Code Online (Sandbox Code Playgroud)

对于上面的类,我(对于一个)通常会在以下名称空间下进行测试(受目录结构的影响):

namespace Acme\SomeBundle\Tests\Service;
Run Code Online (Sandbox Code Playgroud)

现在,这可行.

但顺便说一句,我使用Netbeans IDE,它找不到测试类,除非它在同一名称空间下(当你只想测试一个文件时这是值得注意的).嗯,这可能只是一个Netbeans标准(或其他东西).

但是,无论如何将测试置于与被测试类相同的命名空间中是否合适?这样做有什么优点吗?

1)将测试放在与被测试的类相同的命名空间中是否合适?

2)这样做有什么优点吗?

Cza*_*ino 12

将测试放在与被测试的类相同的命名空间中是否合适?

到目前为止,关于这一点没有任何问题.所以,这或许只是个人偏好,现在.

这样做有什么优点吗?

似乎有.

1)由于测试和类将共享相同的命名空间,因此不需要

use Acme\SomeBundle\Tests\Service
Run Code Online (Sandbox Code Playgroud)

在测试课上.换句话说,创建与该类共享相同名称空间的测试稍微方便一些.

2)如果您使用NetBeans,那么您将能够使用IDE在单个类上运行测试.