Тесты модулей PHP: должны ли тесты находиться под тем же пространством имен, что и класс?

Структура каталогов пакетов Symfony 2.0, как правило, имеет каталог Tests, где должны быть размещены тесты.

Acme
    -> SomeBundle
        -> Controller
        -> Entity
        -> Service
        -> ...
        -> Tests
            -> Controller
            -> Entity
            -> Service
            -> ...
    -> OtherBundle
    -> ...

Я знаю, что тесты работают, даже если они не находятся под тем же пространством имен, что и те классы, которые они тестируют.

namespace Acme\SomeBundle\Service;

/**
 * Some service.
 *
 * @author varchar
 * @since  August 1, 2012
 */
class SomeService
{
}

Для класса выше я (для одного) обычно имеет тест под следующим пространством имен (под влиянием структуры каталогов):

namespace Acme\SomeBundle\Tests\Service;

Теперь это работает нормально.

Кстати, однако, я использую IDE Netbeans, который не может найти тестовый класс, если он не находится под одним и тем же пространством имен (это примечательно, если вы хотите протестировать только один файл). Ну, это может быть просто стандарт Netbeans (или что-то еще).

Независимо, однако, целесообразно ли ставить тесты под тем же пространством имен, что и тестируемый класс? Есть ли какие-либо заслуги в этом?

Вопрос

1) Уместно ли ставить тесты под тем же пространством имен, что и тестируемый класс?

2) Есть ли какие-либо достоинства при этом?

Ответ 1

Уместно ли ставить тесты под тем же пространством имен, что и тестируемый класс?

До сих пор об этом не было никаких проблем. Так что, возможно, это будет только личное предпочтение, пока.

Есть ли какие-либо достоинства в этом?

Кажется, что есть.

1) Поскольку тест и класс будут использовать одно и то же пространство имен, не нужно

use Acme\SomeBundle\Tests\Service

в тестовом классе. Другими словами, несколько легче создать тест, разделяющий те же пространства имен, что и класс.

2) Если вы используете NetBeans, вы сможете запустить тест на одном классе с помощью среды IDE.

Ответ 2

В Bundles это так, что пакет, который вы получите, будет иметь все тесты, чтобы вы могли их запускать. То же самое и с компонентами Symfony, потому что они также являются автономными пакетами. В основном это зависит от вашего стиля. Другой общий шаблон похож на github.com/vandpibe/security