4

在以 PHPUnit 遵循的 xUnit 风格编写测试用例时,似乎每个人都遵循函数名称的驼峰式大小写约定:

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

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

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

这种风格将来会给我带来问题吗?就我个人而言,我发现它更具可读性并且更容易返回。

4

2 回答 2

3

一般来说:不,它目前不会给你带来任何问题(我看不到未来,所以我不确定这个答案在十年后会如何正确!)。

参照说明书,只要

测试是命名的公共方法test*

PHPUnit 会将其视为测试。

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

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

于 2014-12-31T11:03:27.527 回答
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

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

于 2014-12-31T11:03:03.800 回答