Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【PHPカンファレンス沖縄 2023】素朴で考慮漏れのある PHP コードをテストコード...

Shohei Okada
September 16, 2023

【PHPカンファレンス沖縄 2023】素朴で考慮漏れのある PHP コードをテストコードとともに補強していく(ライブコーディング補足資料) / #phpcon_okinawa 2023 livecoding supplementary material

2023/09/16 開催「PHPカンファレンス沖縄2023」(https://phpcon.okinawa.jp/ )にて実施したライブコーディングの補足資料です。

詳細:https://fortee.jp/phpcon-okinawa-2023/proposal/0512a121-2983-4c60-90f3-651c7e7f79fd

Shohei Okada

September 16, 2023
Tweet

More Decks by Shohei Okada

Other Decks in Programming

Transcript

  1. • PHP 8.2.8 • Composer 2.5.8 • PHPUnit 10.3.2 ※

    ※ PHPUnit は 9 → 10 間で大きな変更があるので注意 ライブコーディング環境
  2. PHPUnit を使ったテストコードの書き方 use Okashoi\MyersTriangle\Triangle; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\Test; class TriangleTest

    extends TestCase { #[Test] public function 三辺の長さが等しければ正三角形であること (): void { $triangle = new Triangle(1, 1, 1); $this->assertSame('正三角形', $triangle->getType()); } }
  3. PHPUnit を使ったテストコードの書き方 use Okashoi\MyersTriangle\Triangle; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\Test; class TriangleTest

    extends TestCase { #[Test] public function 三辺の長さが等しければ正三角形であること (): void { $triangle = new Triangle(1, 1, 1); $this->assertSame('正三角形', $triangle->getType()); } }
  4. PHPUnit を使ったテストコードの書き方 use Okashoi\MyersTriangle\Triangle; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\Test; class TriangleTest

    extends TestCase { #[Test] public function 三辺の長さが等しければ正三角形であること (): void { $triangle = new Triangle(1, 1, 1); $this->assertSame('正三角形', $triangle->getType()); } }
  5. PHPUnit を使ったテストコードの書き方 use Okashoi\MyersTriangle\Triangle; use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\Test; class TriangleTest

    extends TestCase { #[Test] public function 三辺の長さが等しければ正三角形であること (): void { $triangle = new Triangle(1, 1, 1); $this->assertSame('正三角形', $triangle->getType()); } }
  6. data provider の使い方(data provider の定義) public static function getTypeDataProvider() {

    return [ '三辺の長さが...正三角形であること' => [1, 1, 1, '正三角形'], '二辺の長さが...二等辺三角形であること' => [1, 2, 2, '二等辺三角形'], '三辺の長さが...不等辺三角形であること' => [2, 3, 4, '不等辺三角形'], ]; } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers
  7. data provider の使い方(data provider の定義) public static function getTypeDataProvider() {

    return [ '三辺の長さが...正三角形であること' => [1, 1, 1, '正三角形'], '二辺の長さが...二等辺三角形であること' => [1, 2, 2, '二等辺三角形'], '三辺の長さが...不等辺三角形であること' => [2, 3, 4, '不等辺三角形'], ]; } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers
  8. data provider の使い方(data provider の定義) public static function getTypeDataProvider() {

    return [ '三辺の長さが...正三角形であること' => [1, 1, 1, '正三角形'], '二辺の長さが...二等辺三角形であること' => [1, 2, 2, '二等辺三角形'], '三辺の長さが...不等辺三角形であること' => [2, 3, 4, '不等辺三角形'], ]; } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers (任意)
  9. data provider の使い方(テストケース側) use PHPUnit\Framework\Attributes\{DataProvider, Test}; // (略) #[Test] #[DataProvider('getTypeDataProvider')]

    public function getType($a, $b, $c, $expected) { $triangle = new Triangle($a, $b, $c); $this->assertSame($expected, $triangle->getType()); } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers
  10. data provider の使い方(テストケース側) use PHPUnit\Framework\Attributes\{DataProvider, Test}; // (略) #[Test] #[DataProvider('getTypeDataProvider')]

    public function getType($a, $b, $c, $expected) { $triangle = new Triangle($a, $b, $c); $this->assertSame($expected, $triangle->getType()); } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers
  11. data provider の使い方(テストケース側) use PHPUnit\Framework\Attributes\{DataProvider, Test}; // (略) #[Test] #[DataProvider('getTypeDataProvider')]

    public function getType($a, $b, $c, $expected) { $triangle = new Triangle($a, $b, $c); $this->assertSame($expected, $triangle->getType()); } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers
  12. data provider の使い方(テストケース側) use PHPUnit\Framework\Attributes\{DataProvider, Test}; // (略) #[Test] #[DataProvider('getTypeDataProvider')]

    public function getType($a, $b, $c, $expected) { $triangle = new Triangle($a, $b, $c); $this->assertSame($expected, $triangle->getType()); } 公式ドキュメント: https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#data-providers