带有驼峰大小写或下划线的PHPUnit测试类

时间:2014-12-31 10:50:13

标签: unit-testing testing phpunit xunit phpspec

在PHPUnit遵循的xUnit样式中编写测试用例时,似乎每个人都遵循函数名称的驼峰案例约定:

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

我一直在用更“雄辩”的PHPSpec风格命名我的方法:

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

这种风格将来会给我带来麻烦吗?就个人而言,我发现它更具可读性,更容易回归。

2 个答案:

答案 0 :(得分:3)

一般来说: 不,它目前不会给你带来任何问题(我无法看到未来,所以我不确定这个答案在大约十年之后会如何实现!)。 / p>

只要

,请参阅the manual
  

测试是名为test*

的公共方法

PHPUnit会将其视为测试。

PHPUnit会将驼峰式函数名称转换为适当间隔的输出描述,因此test_it_has_a_fluent_interface将显示为test it has a fluent interface(仅使用版本4.0.17和4.4.1进行测试)。

或者,您可以在方法的docblock中使用@test注释将其标记为测试方法。

答案 1 :(得分:-1)

你更有说服力的风格并没有太大变化。它仍然是一个词汇,这次是额外的分离。我建议使用基于以下模板的更多上下文方法,而不是采用其中任何一种方法:

methodUnderTest_ExpectedResultOrBehavior_OptionalConditions_OptionalContext

您的示例将是:

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

这也为您提供了测试方法体的结构描述。