PHPUnitでの試験前後の実行タイミングの話

PHPUnitにおいて試験(test)の前後で共有での確保、解放を行う場合にはsetupなどを利用します

それでは他はどうなっているのか?となったわけです。

  • setUpBeforeClass : このテストケースにて一番最初に実行します
  • tearDownAfterClass : このテストケースの一番最後に実行します
  • setUp : 試験の直前で実行します
  • tearDown : 試験直後に実行します

確認ソース

<?php
use Tests\TestCase;

class CheckSortTest extends TestCase {
    public static function setUpBeforeClass(): void {
        print "CheckSortTest@setUpBeforeClass\n";
    }

    public static function tearDownAfterClass(): void {
        print "CheckSortTest@tearDownAfterClass\n";
    }

    protected function setUp(): void {
        print "CheckSortTest@setUp\n";
    }

    protected function tearDown(): void {
        print "CheckSortTest@tearDown\n";
    }

    public function test_a() {
        print " * CheckSortTest@test_a\n";
        $this->assertTrue(true);
    }

    public function test_b(){
        print " * CheckSortTest@test_b\n";
        $this->assertTrue(true);
    }

    public function test_c(){
        print " * CheckSortTest@test_c\n";
        $this->assertTrue(true);
    }
}

https://github.com/wataru775/learning-leravel/blob/20220421_seeder_test/tests/Unit/CheckSortTest.php

実行結果

CheckSortTest@setUpBeforeClass

CheckSortTest@setUp
 * CheckSortTest@test_a
CheckSortTest@tearDown

CheckSortTest@setUp
 * CheckSortTest@test_b
CheckSortTest@tearDown

CheckSortTest@setUp
 * CheckSortTest@test_c
CheckSortTest@tearDown

CheckSortTest@tearDownAfterClass

終いに

setUpBeforeClass / tearDownAfterClassがstaticなのがポイントですね

今回はただのメモです…

基本的にsetupだけを使っていましたが、teardownとかで解放しなきゃなw