Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phpunit,一种测试-一种方法?_Php_Phpunit - Fatal编程技术网

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

Phpunit,一种测试-一种方法?,php,phpunit,Php,Phpunit,一次测试必须涵盖一种方法,这是必须的吗?例如: class Testme() { public function testMe ($a) { if ($a == 1) { throw new Exception ('YAY'); } else { return true; } } } 也许这不是一个“真正”的问题。它可以通过以下

一次测试必须涵盖一种方法,这是必须的吗?例如:

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种独立测试方法(

< P>)中测试一种方法是否可行,而不是考虑类的测试/方法,您应该将其视为类每一种预期行为的一种测试。在您的示例中,应该发生两种不同的情况

  • 如果参数为1,则引发异常
  • 对于其他值,返回true
  • 所以你需要两个测试,因为有两个不同的事情应该发生


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

    单元测试的整个要点是孤立地测试单元/方法,以消除任何依赖性。。。。因此,在单个单元测试中测试多个方法违反了这一原则。。。。这并不排除对单个方法运行多个测试,以测试该方法中代码的不同路径;通常情况下,应独立测试异常