当以 PHPUnit 遵循的 xUnit 样式编写测试用例时,似乎每个人都遵循函数名称的驼峰大小写约定:
public function testObjectHasFluentInterface()
{
// ...
}
我一直在用更"雄辩"的 PHPSpec 风格来命名我的方法:
public function test_it_has_a_fluent_interface()
{
// ...
}
这种风格将来会给我带来问题吗?就我个人而言,我发现它的可读性更强,也更容易回到。
一般来说:不,它目前不会给你带来任何问题(我看不到未来,所以我不确定这个答案在大约十年后会如何成立!
参考手册,只要
测试是名为
test*
的公共方法
PHPUnit 会将其视为一种测试。
PHPUnit 会将驼峰大小写的函数名称转换为适当间隔的描述以进行输出,因此test_it_has_a_fluent_interface
将显示为 test it has a fluent interface
(刚刚在版本 4.0.17 和 4.4.1 中测试)。
或者,您可以使用方法的文档块中的@test
注释将其标记为测试方法。
你更有口才的风格并没有太大变化。它仍然是一团单词,这次有额外的分离。与其这样做,我建议基于以下模板的更多上下文方法:
methodUnderTest_ExpectedResultOrBehavior_OptionalConditions_OptionalContext
您的示例将是:
public function testObject_HasFluentInterface
public function saveSale_ThrowsException_WhenTransactionDateIsYesterday
public function calculatePrice_ReturnsPrice_CalculatedIncludingPromotion
public function generateXml_CreatesXml_AndSavesItToFile_WhenAtLeastOneEntityExists
这也为您提供了测试方法主体的结构描述。