PHP单元:创建要使用的公共对象
我正在为一个类编写PHP单元测试,它会发出一些curl请求。目前,每个测试都以我的类实例初始化和登录指令开始,以注销指令结束,例如PHP单元:创建要使用的公共对象,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我正在为一个类编写PHP单元测试,它会发出一些curl请求。目前,每个测试都以我的类实例初始化和登录指令开始,以注销指令结束,例如 public function testSomeMethod(){ $a = new myClass(); $a->login(); .... $a->logout(); $this->assertTrue($smth); 我想创建一个公共对象$a=new myCla
public function testSomeMethod(){
$a = new myClass();
$a->login();
....
$a->logout();
$this->assertTrue($smth);
我想创建一个公共对象$a=new myClass(),在所有测试之前调用login方法,在所有测试之后调用logout方法。我该怎么做?根据PHPUnit文档,您可以使用以下钩子方法: setUp()和tearDown()模板方法对每个测试运行一次 测试用例类的方法(以及在新实例上) 也 此外,setUpBeforeClass()和tearDownAfterClass()模板 在运行测试用例类的第一个测试之前调用方法 在分别运行测试用例类的最后一个测试之后 在您的情况下,您可以将登录类定义为类成员,并在
setUpBeforeClass()
方法中实例化(登录),然后在tearDownAfterClass()中注销
编辑:示例
考虑以下类别:
此测试用例:
转储以下输出:
登录名为.test1.test2注销名为
时间:49ms,内存:6.00Mb
OK(2个测试,2个断言)
希望这有帮助
namespace Acme\DemoBundle\Service;
class MyService {
public function login()
{
echo 'login called'.PHP_EOL;
}
public function logout()
{
echo 'logout called'.PHP_EOL;
}
public function doService($name)
{
echo $name.PHP_EOL;
return $name;
}
}
use Acme\DemoBundle\Service\MyService;
class MyServiceTest extends \PHPUnit_Framework_TestCase {
/**
* @var \Acme\DemoBundle\Service\MyService
*/
protected static $client;
public static function setUpBeforeClass()
{
self::$client = new MyService();
self::$client->login();
}
public function testSomeMethod1()
{
$value = self::$client->doService("test1");
$this->assertEquals("test1",$value);
}
public function testSomeMethod2()
{
$value = self::$client->doService("test2");
$this->assertEquals("test2",$value);
}
public static function tearDownAfterClass()
{
self::$client->logout();
}
}