一项测试必须涵盖一种方法吗?例如:
class Testme()
{
public function testMe ($a)
{
if ($a == 1)
{
throw new Exception ('YAY');
}
else
{
return true;
}
}
}
也许不是真实的"但是问题。它可以通过以下方式进行测试:
/**
* @expectedException Exception
*/
public function test1()
{
new Testme()->testMe (1)
}
public function test2()
{
$this->assertTrue (new Testme()->testMe (2));
}
但它可以放在一个方法中(在这种情况下,它有点难以测试异常)。什么是好方法?一种方法必须在一种测试方法中,或者在即使是4种独立测试方法中测试方法也可以吗?
答案 0 :(得分:3)
不应考虑类的测试/方法,而应将其视为每个预期的类行为的一个测试。在您的示例中,您将有两个不同的事情发生
所以你需要进行两次测试,因为应该发生两种不同的事情。
您的测试有助于指定您的代码应该 DO 的内容,而不是您的代码应该是什么样子。一个方法可能会导致发生不同的事情,具体取决于它运行的参数undo。