我希望通过调用它们来重用我的一些PHPUnit函数,而不是在所有单元测试中重复它们,例如:
public function testContent()
{
$this->assertNotEmpty($this->response, $this->message);
}
如果我把它放在tests / TestCase.php下,它会运行所有的单元测试。
在哪里放置这个或者通常如何做到这一点?顺便说一句,我在Laravel 4上使用它。
答案 0 :(得分:0)
答案 1 :(得分:0)
显然,你的问题不是重复使用测试,而是在没有预期的情况下调用你的测试。
所以,请记住:任何名称以&#34开头的方法;测试"现有类中的(testFoo,testBar)将被视为测试。
所以如果你有像这样的A,B和C类
Result = ['a','d']
你将有8个测试:A :: testFoo(),A :: testBar(),B :: testFoo(),B :: testBar(),B :: testBaz(),C :: testFoo() ,C :: testBar(),C :: testQuz()。
这可能不是你想要做的。 你可能想要只在类B和C中使用testFoo和testBar,而不是它A.在这种情况下,你只需要将A声明为抽象类。
class A extends \PHPUnit_Framework_TestCase {
public function testFoo() {...}
public function testBar() {...}
}
class B extends A {
public function testBaz() {...}
}
class C extends A {
public function testQuz() {...}
}
现在你有6个测试:B :: testFoo(),B :: testBar(),B :: testBaz(),C :: testFoo(),C :: testBar(),C :: testQuz()
也许,这是你需要的,也许不是。也许,你想只在一些继承的类中使用testFoo()和testBar(),而不是全部。
在这种情况下,在您的父类而不是测试中进行断言。
abstract class A extends \PHPUnit_Framework_TestCase {
public function testFoo() {...}
public function testBar() {...}
}
class B extends A {
public function testBaz() {...}
}
class C extends A {
public function testQuz() {...}
}
现在,你只有4个测试:B :: testFoo(),B :: testBaz,C :: testBar(),C :: testQuz()