Phpunit,一个测试 - 一种方法?

时间:2015-02-22 18:13:45

标签: php phpunit

一项测试必须涵盖一种方法吗?例如:

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种独立测试方法中测试方法也可以吗?

1 个答案:

答案 0 :(得分:3)

不应考虑类的测试/方法,而应将其视为每个预期的类行为的一个测试。在您的示例中,您将有两个不同的事情发生

  1. 如果参数为1,则抛出异常
  2. 对其他值返回true
  3. 所以你需要进行两次测试,因为应该发生两种不同的事情。

    您的测试有助于指定您的代码应该 DO 的内容,而不是您的代码应该是什么样子。一个方法可能会导致发生不同的事情,具体取决于它运行的参数undo。

相关问题