/
phpunit Fixtures

phpunit Fixtures

setUp, tearDown

jUnit 처럼 매 테스트마다 호출되어야 하는 메서드가 있다면 setUptearDown 사용

class HttpTest extends TestCase
{
    protected $http = null;

    protected  function setUp()
    {
        $this->http = new HttpClient();
    }

    protected  function tearDown()
    {
        $this->http = null;
    }

    public function testBasicExample()
    {
        $this->assertEquals($this->http, null);
        var_dump($this->http);
    }

전역 픽스처 

클래스 생성전, 파괴전에 한 번만 호출될 전역 메서드가 필요할 경우 setUpBeforeClass,tearDownAfterClass  를 static 으로 구현

class HttpTest extends TestCase
{
    protected $http = null;
	
   public static function setUpBeforeClass()
   { 
       print('setUpBeforeClass');
   }


   public static function tearDownAfterClass  ()
   { 
       print('tearDownAfterClass  ');
   }

    protected  function setUp()
    {
        $this->http = new HttpClient();
    }

    protected  function tearDown()
    {
        $this->http = null;
    }
}



문제 해결

Laravel Eloquent 에서 에러 발생

phpunit 으로 단위 테스트시 setUp() 메소드를 추가하면 다음 에러 발생

PHP Fatal error:  Call to a member function connection() on a non-object in vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 3146
PHP Stack trace:
PHP   1. {main}() C:\util\phpunit.phar:0
PHP   2. PHPUnit_TextUI_Command::main() C:\util\phpunit.phar:612
PHP   3. PHPUnit_TextUI_Command->run() phar://C:/util/phpunit.phar/phpunit/TextUI/Command.php:138
PHP   4. PHPUnit_TextUI_TestRunner->doRun() phar://C:/util/phpunit.phar/phpunit/TextUI/Command.php:186
PHP   5. PHPUnit_Framework_TestSuite->run() vendor\phpunit\phpunit\src\TextUI\TestRunner.php:406
PHP   6. PHPUnit_Framework_TestCase->run() vendor\phpunit\phpunit\src\Framework\TestSuite.php:722
PHP   7. PHPUnit_Framework_TestResult->run() vendor\phpunit\phpunit\src\Framework\TestCase.php:699
PHP   8. PHPUnit_Framework_TestCase->runBare() vendor\phpunit\phpunit\src\Framework\TestResult.php:609
PHP   9. PHPUnit_Framework_TestCase->runTest() vendor\phpunit\phpunit\src\Framework\TestCase.php:743
PHP  10. ReflectionMethod->invokeArgs() vendor\phpunit\phpunit\src\Framework\TestCase.php:866


원인은 parent::setUp() 을 호출하지 않아서 임

public function setUp()
	{
		//parent::setUp();
		$this->mig = new MigUtils;		
	}


Ref


Related content

PHPUnit 에서 예외 테스트(Exception Test) 하기
PHPUnit 에서 예외 테스트(Exception Test) 하기
More like this
phpunit 단위 테스트 건너뛰기(skipping tests)
phpunit 단위 테스트 건너뛰기(skipping tests)
More like this
laravel test 하기
laravel test 하기
More like this
PHPUnit test case dependency
PHPUnit test case dependency
More like this
phpunit 설치 및 php 단위 테스트 하기
phpunit 설치 및 php 단위 테스트 하기
More like this
travis ci 에서 phpunit 에러날 때
travis ci 에서 phpunit 에러날 때
More like this