Phpunit,一个测试 - 一种方法?
Phpunit, one test - one method?
一个测试一定要覆盖一个方法吗?例如:
class Testme()
{
public function testMe ($a)
{
if ($a == 1)
{
throw new Exception ('YAY');
}
else
{
return true;
}
}
}
不过可能不是 "real" 问题。它可以通过以下方式进行测试:
/**
* @expectedException Exception
*/
public function test1()
{
new Testme()->testMe (1)
}
public function test2()
{
$this->assertTrue (new Testme()->testMe (2));
}
但它可以放在一个方法中(在这种情况下,测试异常有点困难)。什么是好方法?一个方法必须在一个测试方法中,还是一个方法在甚至4个独立测试方法中测试都可以吗?
与其考虑 class 的 tests/method,您应该将其视为针对 class 预期行为的一项测试。在你的例子中,你有两件不同的事情应该发生
- 如果参数为1,则抛出异常
- return 其他值也是如此
所以你需要这两个测试,因为应该发生两种不同的事情。
您的测试有助于指定您的代码应该DO,而不是您的代码应该是什么样子。一个方法可能会导致不同的事情发生,这取决于它是 运行.
的参数撤消
一个测试一定要覆盖一个方法吗?例如:
class Testme()
{
public function testMe ($a)
{
if ($a == 1)
{
throw new Exception ('YAY');
}
else
{
return true;
}
}
}
不过可能不是 "real" 问题。它可以通过以下方式进行测试:
/**
* @expectedException Exception
*/
public function test1()
{
new Testme()->testMe (1)
}
public function test2()
{
$this->assertTrue (new Testme()->testMe (2));
}
但它可以放在一个方法中(在这种情况下,测试异常有点困难)。什么是好方法?一个方法必须在一个测试方法中,还是一个方法在甚至4个独立测试方法中测试都可以吗?
与其考虑 class 的 tests/method,您应该将其视为针对 class 预期行为的一项测试。在你的例子中,你有两件不同的事情应该发生
- 如果参数为1,则抛出异常
- return 其他值也是如此
所以你需要这两个测试,因为应该发生两种不同的事情。
您的测试有助于指定您的代码应该DO,而不是您的代码应该是什么样子。一个方法可能会导致不同的事情发生,这取决于它是 运行.
的参数撤消