2014-12-31 3 views
3

При написании тестового InThe XUnit стиля, PHPUnit следует, кажется, что все следует ГорбатыйРегистр конвенции для имен функций:тест PHPUnit классов с ГорбатыйРегистр или подчеркивания

public function testObjectHasFluentInterface() 
{ 
    // ... 
} 

Я именование моих методов с более «красноречивый» стиль PHPSpec:

public function test_it_has_a_fluent_interface() 
{ 
    // ... 
} 

Будет ли этот стиль создавать проблемы для меня в будущем? Лично я считаю, что это гораздо более читаемо и легко вернуться.

ответ

2

Вообще-то: Нет, в настоящее время это не вызовет у вас никаких проблем (я не вижу будущего, поэтому я не уверен, как этот ответ будет правдой, давайте скажем через десять лет!) ,

Ссылаясь на the manual, пока

тесты общественные методы, которые названы test*

PHPUnit будет рассматривать его в качестве теста.

PHPUnit преобразует имена функциональных названий верблюдов в правильно разнесенные описания для вывода, поэтому test_it_has_a_fluent_interface будет отображаться как test it has a fluent interface (только что протестирован с версией 4.0.17 и 4.4.1).

В качестве альтернативы вы можете использовать аннотацию @test в док-блоке метода, чтобы пометить ее как метод тестирования.

0

Ваш более красноречивый стиль не сильно изменится. Это все еще капля слов, на этот раз с дополнительным разделением. Вместо того чтобы делать либо, я предлагаю более контекстный подход, основанный на следующем шаблоне:

methodUnderTest_ExpectedResultOrBehavior_OptionalConditions_OptionalContext 

Ваш пример (ы) будет тогда:

public function testObject_HasFluentInterface 
public function saveSale_ThrowsException_WhenTransactionDateIsYesterday 
public function calculatePrice_ReturnsPrice_CalculatedIncludingPromotion 
public function generateXml_CreatesXml_AndSavesItToFile_WhenAtLeastOneEntityExists 

Это также дает своего рода структурное описание метода пробного тела ,