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

PHPUnit 10 概論 / Introduction of PHPUnit 10

02
March 23, 2023

PHPUnit 10 概論 / Introduction of PHPUnit 10

2023/03/23 PHPerKaigi 2023のトークで使用したスライドです。
https://fortee.jp/phperkaigi-2023/proposal/4379c965-b88d-49c8-b316-e27e2e6b4db1

02

March 23, 2023
Tweet

More Decks by 02

Other Decks in Programming

Transcript

  1. 2023/03/23 PHPerKaigi 2023
    @02
    PHPUnit 10 概論

    View full-size slide

  2. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    Web Application Enginner
    02 大津 和槻
    :@cocoeyes02
    2021/02~ BASE, Inc.
    自己紹介
    PHP系カンファレンス登壇 執筆 登壇応援中!

    View full-size slide

  3. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    3年ぶりのPHPUnit
    メジャーバージョンアップ
    3
    https://phpunit.de/index.html

    View full-size slide

  4. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    4
    https://phpunit.de/index.html
    3年ぶりのPHPUnit
    メジャーバージョンアップ

    View full-size slide

  5. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    🎉
    5
    3年ぶりのPHPUnit
    メジャーバージョンアップ

    View full-size slide

  6. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    6
    https://github.com/sebastianbergmann/phpunit/blob/main/ChangeLog-10.0.md
    3年ぶりのPHPUnit
    メジャーバージョンアップ

    View full-size slide

  7. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    多い
    7
    3年ぶりのPHPUnit
    メジャーバージョンアップ

    View full-size slide

  8. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今日はPHPUnit 10のアップデート
    について時間が許す限り解説します
    8
    3年ぶりのPHPUnit
    メジャーバージョンアップ

    View full-size slide

  9. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今日話す内容
    9
    ● PHP8.1以上が必須に
    ● 新しいテストイベントシステムの追加
    ● 各テストの結果やテスト自体の問題を区別する
    ● PHP8.0のAttributeを用いたメタデータの仕様変更
    ● 色覚多様性を考慮したコードカバレッジレポートの仕様変更
    ● DataProviderの仕様変更
    ● 文法の誤りや差別的な用語を消す
    ● 削除されたが代替手段の提供がないメソッド

    View full-size slide

  10. PHP8.1以上が必須に

    View full-size slide

  11. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    PHP8.1以上が必須に
    11
    https://phpunit.de/index.html

    View full-size slide

  12. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    PHP8.1以上が必須に
    12
    https://www.php.net/supported-versions.php

    View full-size slide

  13. 新しいテストイベント
    システムの追加

    View full-size slide

  14. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    新しいテストイベント
    システムの追加
    14
    テストイベント(テスト開始・終了、合格・不合格など)にまつわるシステムが
    抜本的に変わりました。
    これまで使用していた既存のテストイベントにまつわるシステム(TestListenerや
    Test Hookなど)は10.0で削除され、新しいシステムを使用することになります。

    View full-size slide

  15. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    15
    対象となるテストイベントの数はなんと49個
    https://thephp.cc/presentations/phpunit-10-the-new-event-subsystem
    新しいテストイベント
    システムの追加

    View full-size slide

  16. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    16
    基本的な使い方は3ステップ
    1. 関連するイベントのSubscriberを作成する
    2. Subscriberを設定するExtensionを作成する
    3. Extensionをphpunit.xml等に設定する
    新しいテストイベント
    システムの追加

    View full-size slide

  17. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    17
    1. 関連するイベントのSubscriberを作成する
    https://docs.phpunit.de/en/10.0/extending-phpunit.html#extending-phpunit-event-system-extending-the-test-runner-examples-executionfinishedsubscriber-php
    新しいテストイベント
    システムの追加

    View full-size slide

  18. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    18
    1. 関連するイベントのSubscriberを作成する
    https://docs.phpunit.de/en/10.0/extending-phpunit.html#extending-phpunit-event-system-extending-the-test-runner-examples-executionfinishedsubscriber-php
    新しいテストイベント
    システムの追加

    View full-size slide

  19. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    19
    2. Subscriberを設定するExtensionを作成する
    https://docs.phpunit.de/en/10.0/extending-phpunit.html#event-system-subscribing-to-events-examples-extension-php
    新しいテストイベント
    システムの追加

    View full-size slide

  20. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    20
    2. Subscriberを設定するExtensionを作成する
    https://docs.phpunit.de/en/10.0/extending-phpunit.html#event-system-subscribing-to-events-examples-extension-php
    新しいテストイベント
    システムの追加

    View full-size slide

  21. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    21
    3. Extensionをphpunit.xml等に設定する
    https://docs.phpunit.de/en/10.0/extending-phpunit.html#extending-phpunit-event-system-extending-the-test-runner-examples-phpunit-xml
    新しいテストイベント
    システムの追加

    View full-size slide

  22. 各テストの結果や
    テスト自体の問題を
    区別する

    View full-size slide

  23. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    各テストの結果や
    テスト自体の問題を区別する
    23
    各テストの結果(Errored, Failed, Incomplete, Skipped, Passed, etc) や
    テスト自体の問題(Considered risky, Warning, etc) のそれぞれを
    明確に区別する方針になりました。
    この方針に基づいた変更がいくつかあります。

    View full-size slide

  24. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    24
    各テストの結果やテスト自体の問題のそれぞれを区別することによる影響
    ● テストを中止する条件の変更
    ● デフォルトでは、deprecations, notices, warningsなどを出力しない
    ● 特定のテストの結果やテスト自体の問題が発生しても、例外を投げない
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  25. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    25
    テストを中止する条件の変更
    いくつかのテストの結果やテスト自体の問題では、発生してもテストを中止しないよう
    になりました。
    中止しないようになったイベントは以下です。
    ● Deprecated
    ● Notice
    ● Strict
    ● Warning
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  26. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    26
    26
    テストを中止する条件の変更
    https://phpunit.de/announcements/phpunit-10.html
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  27. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    27
    27
    テストを中止する条件の変更
    https://phpunit.de/announcements/phpunit-10.html
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  28. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    28
    28
    テストを中止する条件の変更
    https://phpunit.de/announcements/phpunit-10.html
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  29. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    29
    29
    テストを中止する条件の変更
    https://phpunit.de/announcements/phpunit-10.html
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  30. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    30
    30
    テストを中止する条件の変更
    https://phpunit.de/announcements/phpunit-10.html
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  31. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    31
    デフォルトでは、deprecations, notices, warningsなどを出力しない
    特定のテストの結果やテスト自体の問題については、デフォルトでは出力しない仕様へ
    と変わりました。
    ● Incomplete
    ● Skipped
    ● Deprecated
    ● Error
    ● Notice
    ● Warning
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  32. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    32
    デフォルトでは、deprecations, notices, warningsなどを出力しない
    オプションを使用、もしくはphpunit.xmlの設定を変更すれば表示されます。
    ● --display-incomplete、displayDetailsOnIncompleteTests
    ● --display-skipped、displayDetailsOnSkippedTests
    ● --display-deprecations、displayDetailsOnTestsThatTriggerDeprecations
    ● --display-errors、displayDetailsOnTestsThatTriggerErrors
    ● --display-notices、displayDetailsOnTestsThatTriggerNotices
    ● --display-warnings、displayDetailsOnTestsThatTriggerWarnings
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  33. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    33
    33
    デフォルトでは、deprecations, notices, warningsなどを出力しない
    https://phpunit.de/announcements/phpunit-10.html
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  34. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    34
    特定のテストの結果やテスト自体の問題が発生しても、例外を投げない
    以下のテストの結果やテスト自体の問題が発生しても、
    例外を投げないようになりました。
    ● Deprecated
    ● Error
    ● Notice
    ● Warning
    expectException()を使っても、上記のテストイベントは検知しないということです。
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  35. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    35
    特定のテストの結果やテスト自体の問題が発生しても、例外を投げない
    また、例外として検知しなくなった以下のメソッドも削除になりました。
    ● expectDeprecation()、expectDeprecationMessage() 、
    expectDeprecationMessageMatches()
    ● expectError()、expectErrorMessage()、expectErrorMessageMatches()
    ● expectNotice()、expectNoticeMessage()、
    expectNoticeMessageMatches()
    ● expectWarning()、expectWarningMessage()、
    expectWarningMessageMatches()
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  36. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    36
    特定のテストの結果やテスト自体の問題が発生しても、例外を投げない
    残念ながら現時点では代替手段の提供はありません。
    各テストの結果や
    テスト自体の問題を区別する

    View full-size slide

  37. PHP8.0のAttributeを
    用いたメタデータの仕様変更

    View full-size slide

  38. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    PHP8.0のAttributeを用いた
    メタデータの仕様変更
    38
    PHP8.0 でAttributesが実装されたので、PHPUnitでもAttributesを使ってメタデータ
    を指定できるようになりました。
    優先度が Attributesのメタデータ > コメントのメタデータ になる他、
    コメントのメタデータはPHPUnit11で非推奨、PHPUnit12では削除になるようです。

    View full-size slide

  39. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    39
    例:DataProviderをAttributeを用いて呼び出す場合
    namespace example;
    use PHPUnit\Framework\TestCase;
    use PHPUnit\Framework\Attributes\DataProvider;
    #[DataProvider(Foo::$dataProviderMethod())]
    final class FooTest extends TestCase
    {
    // ...
    }
    PHP8.0のAttributeを用いた
    メタデータの仕様変更

    View full-size slide

  40. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    40
    例:DataProviderをAttributeを用いて呼び出す場合
    namespace example;
    use PHPUnit\Framework\TestCase;
    use PHPUnit\Framework\Attributes\DataProvider;
    #[DataProvider(Foo::$dataProviderMethod())]
    final class FooTest extends TestCase
    {
    // ...
    }
    PHP8.0のAttributeを用いた
    メタデータの仕様変更

    View full-size slide

  41. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    41
    また、PHPUnit内ではプロパティをAttributeと読んでいましたが、
    Attribute → Propertyへと名前を変える方針になりました。
    そのため、Attributeと名のつくassertメソッドが全て削除されます
    (代替手段がないメソッドもあり)
    PHP8.0のAttributeを用いた
    メタデータの仕様変更

    View full-size slide

  42. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    42
    削除予定のAttributeと名のつくassertメソッド
    ● assertClassHasAttribute()
    ● assertClassNotHasAttribute()
    ● assertClassHasStaticAttribute()
    ● assertClassNotHasStaticAttribute()
    ● assertObjectHasAttribute()
    ● assertObjectNotHasAttribute()
    ● classHasAttribute()
    ● classHasStaticAttribute()
    ● objectHasAttribute()
    PHP8.0のAttributeを用いた
    メタデータの仕様変更

    View full-size slide

  43. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    43
    削除予定のAttributeと名のつくassertメソッド
    ● assertClassHasAttribute()
    ● assertClassNotHasAttribute()
    ● assertClassHasStaticAttribute()
    ● assertClassNotHasStaticAttribute()
    ● assertObjectHasAttribute()
    ● assertObjectNotHasAttribute()
    ● classHasAttribute()
    ● classHasStaticAttribute()
    ● objectHasAttribute()
    以下はPHPUnit10.1にて実装予定
    → assertObjectHasProperty()
    → assertObjectNotHasProperty()
    PHP8.0のAttributeを用いた
    メタデータの仕様変更

    View full-size slide

  44. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    44
    削除予定のAttributeと名のつくassertメソッド
    ● assertClassHasAttribute()
    ● assertClassNotHasAttribute()
    ● assertClassHasStaticAttribute()
    ● assertClassNotHasStaticAttribute()
    ● assertObjectHasAttribute()
    ● assertObjectNotHasAttribute()
    ● classHasAttribute()
    ● classHasStaticAttribute()
    ● objectHasAttribute()
    → ?
    → ?
    → ?
    → ?
    → assertObjectHasProperty()
    → assertObjectNotHasProperty()
    → ?
    → ?
    → ?
    PHP8.0のAttributeを用いた
    メタデータの仕様変更

    View full-size slide

  45. 色覚多様性を考慮した
    コードカバレッジレポートの
    仕様変更

    View full-size slide

  46. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    色覚多様性を考慮した
    コードカバレッジレポートの仕様変更
    46
    https://github.com/sebastianbergmann/php-code-coverage/issues/556

    View full-size slide

  47. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    色覚多様性を考慮した
    コードカバレッジレポートの仕様変更
    47
    phpunit.xml等で、Success(Low, Medium, High)、Warning、Dangerの色を
    任意の色へと指定できるようになりました

    colorSuccessLow="#{any color code}"
    colorSuccessMedium="#{any color code}"
    colorSuccessHigh="#{any color code}"
    colorWarning="#{any color code}"
    colorDanger="#{any color code}"
    />

    View full-size slide

  48. DataProviderの仕様変更

    View full-size slide

  49. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    DataProviderの仕様変更
    49
    以下の条件に当てはまるDataProviderが非推奨になりました。
    ● staticではない
    ● publicではない
    ● 引数を必要とする
    逆にいえば、以下のような形式のDataProviderを推奨しているということですね。
    public static XXX() {}

    View full-size slide

  50. 文法の誤りや
    差別的な用語を消す

    View full-size slide

  51. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    文法の誤りや差別的な用語を消す
    51
    文法の誤りや判断しづらいメソッドが削除されました。
    ● assertNotIsReadable
    ● assertNotIsWritable
    ● assertDirectoryNotExists
    ● assertDirectoryNotIsReadable
    ● assertDirectoryNotIsWritable
    ● assertFileNotExists
    ● assertFileNotIsReadable
    ● assertRegExp
    ● assertNotRegExp

    View full-size slide

  52. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    文法の誤りや差別的な用語を消す
    52
    文法の誤りや判断しづらいメソッドが削除されました。
    ● assertNotIsReadable
    ● assertNotIsWritable
    ● assertDirectoryNotExists
    ● assertDirectoryNotIsReadable
    ● assertDirectoryNotIsWritable
    ● assertFileNotExists
    ● assertFileNotIsReadable
    ● assertRegExp
    ● assertNotRegExp
    → assertIsNotReadable
    → assertIsNotWritable
    → assertDirectoryDoesNotExist
    → assertDirectoryIsNotReadable
    → assertDirectoryIsNotWritable
    → assertFileDoesNotExist
    → assertFileIsNotReadable
    → assertMatchesRegularExpression
    → assertDoesNotMatchRegularExpression

    View full-size slide

  53. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    文法の誤りや差別的な用語を消す
    53
    差別的な用語を用いているクラスやプロパティ、オプションも削除されました。
    ● PHPUnit\Util\Blacklist
    ● PHPUnit\Framework\TestCase::$backupGlobalsBlacklist
    ● PHPUnit\Framework\TestCase::$backupStaticAttributesBlacklist
    ● --whitelist オプション

    View full-size slide

  54. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    文法の誤りや差別的な用語を消す
    54
    差別的な用語を用いているクラスやプロパティ、オプションも削除されました。
    ● PHPUnit\Util\Blacklist
    → PHPUnit\Util\Excludelist
    ● PHPUnit\Framework\TestCase::$backupGlobalsBlacklist
    → PHPUnit\Framework\TestCase::$backupGlobalsExcludeList
    ● PHPUnit\Framework\TestCase::$backupStaticAttributesBlacklist
    → PHPUnit\Framework\TestCase::$backupStaticAttributesExcludeList
    ● --whitelist オプション
    → --coverage-filter オプション

    View full-size slide

  55. 削除されたが代替手段の提供
    がないメソッド

    View full-size slide

  56. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    削除されたが
    代替手段の提供がないメソッド
    56
    2つほど紹介します。
    どちらもPHPUnit9の時点で、非推奨になったメソッドです。
    ● at
    ● withConsecutive

    View full-size slide

  57. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    57
    PHPUnit\Framework\MockObject\Matcher\InvokedAtIndex at(int $index)
    評価対象のメソッドが $index 回目に実行された際にマッチするオブジェクトを返しま
    す。
    https://docs.phpunit.de/en/9.6/test-doubles.html
    削除されたが
    代替手段の提供がないメソッド

    View full-size slide

  58. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    58
    PHPUnit\Framework\MockObject\Matcher\InvokedAtIndex at(int $index)
    issueに書いてあったコメントでは、withConsecutiveメソッドへの置き換えを提案、
    もしくは置き換えの実施をしていたケースが多かったです。
    https://github.com/sebastianbergmann/phpunit/issues/4297
    削除されたが
    代替手段の提供がないメソッド

    View full-size slide

  59. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    59
    PHPUnit\Framework\MockObject\Matcher\InvokedAtIndex at(int $index)
    issueに書いてあったコメントでは、withConsecutiveメソッドへの置き換えを提案、
    もしくは置き換えの実施をしていたケースが多かったです。
    https://github.com/sebastianbergmann/phpunit/issues/4297
    削除されたが
    代替手段の提供がないメソッド

    View full-size slide

  60. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    60
    PHPUnit\Framework\MockObject\Builder\InvocationMocker
    withConsecutive(array ...$arguments)
    withConsecutive() メソッドには、 テスト対象の呼び出しにあわせて、引数の配列を
    好きなだけ渡せます。 個々の配列は制約のリストです。 with() と同様に、これがモッ
    ク対象メソッドのそれぞれの引数に対応します。
    https://docs.phpunit.de/en/9.6/test-doubles.html
    削除されたが
    代替手段の提供がないメソッド

    View full-size slide

  61. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    61
    PHPUnit\Framework\MockObject\Builder\InvocationMocker
    withConsecutive(array ...$arguments)
    https://github.com/sebastianbergmann/phpunit/issues/4564
    削除されたが
    代替手段の提供がないメソッド

    View full-size slide

  62. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    62
    PHPUnit\Framework\MockObject\Builder\InvocationMocker
    withConsecutive(array ...$arguments)
    残念ながら代替手段がないままPHPUnit 10で削除されてしまい、
    現在も代替手段として何が良いのか議論している最中です。
    https://github.com/sebastianbergmann/phpunit/issues/4026
    良いアイディアがあれば、issueにコメントしたりPRを出したりする方が
    早く事が運ぶかもしれませんね。
    削除されたが
    代替手段の提供がないメソッド

    View full-size slide

  63. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    最後に
    63
    今回どのChangeLogに触れたかは、スライドの最後に載せています。
    時間の都合で一部のみの解説になりましたが、
    まだまだ解説していない機能がたくさんあります!
    ● 新規追加、仕様変更のあった、削除されたassertメソッドやオプション
    ● TestCaseクラスの(スーパー)グローバル変数の仕様変更
    ● キャッシュ先のディレクトリ変更
    ● XML周りの変更
    今回の発表で話せなかった部分は、後日テックブログに載せようと思います!
    BASEプロダクトチームブログをよろしくお願いします!

    View full-size slide

  64. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    最後に
    64
    バックエンド
    エンジニア
    SRE
    フロントエンド
    エンジニア
    セキュリティ
    エンジニア
    QA
    エンジニア
    データ
    エンジニア
    etc…
    We are hiring!
    https://binc.jp/jobs

    View full-size slide

  65. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    65
    PHP8.1以上が必須に
    ● PHP 7.3, PHP 7.4, and PHP 8.0 are no longer supported

    View full-size slide

  66. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    66
    新しいテストイベントシステムの追加
    ● #4676: Event System for extending PHPUnit's test runner
    ● #3389: Remove PHPUnit\Framework\TestListener and
    PHPUnit\Framework\TestListenerDefaultImplementation
    ● #4596: Remove Test Hooks

    View full-size slide

  67. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    67
    各テストの結果やテスト自体の問題を区別する
    ● A test method now continues execution after test(ed) code triggered
    E_(USER_)DEPRECATED, E_(USER_)NOTICE, E_STRICT, or E_(USER_)WARNING
    ● The CLI test runner now only stops after a test errored when --stop-on-error or
    --stop-on-defect is used
    ● The CLI test runner now only stops after a test failed when --stop-on-failure or
    --stop-on-defect is used
    ● The CLI test runner now only stops after a test triggered a warning when
    --stop-on-warning or --stop-on-defect is used
    ● The CLI test runner now only stops after a test was marked as risky when
    --stop-on-risky or --stop-on-defect is used
    ● The CLI test runner now only stops after a test was skipped when --stop-on-skipped is
    used

    View full-size slide

  68. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    68
    各テストの結果やテスト自体の問題を区別する
    ● The CLI test runner now only stops after a test was marked as incomplete when
    --stop-on-incomplete is used
    ● #3777: Remove PHPUnit\Framework\Error* classes
    ● Removed the expectDeprecation(), expectDeprecationMessage(), and
    expectDeprecationMessageMatches() methods
    ● Removed the expectError(), expectErrorMessage(), and expectErrorMessageMatches()
    methods
    ● Removed the expectNotice(), expectNoticeMessage(), and
    expectNoticeMessageMatches() methods
    ● Removed the expectWarning(), expectWarningMessage(), and
    expectWarningMessageMatches() methods

    View full-size slide

  69. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    69
    PHP8.0のAttributeを用いたメタデータの仕様変更
    ● #4502: Support PHP 8 attributes for adding metadata to test classes and
    test methods as well as tested code units
    ● #4603: Use "property" instead of "attribute" for configuring the backup of
    static fields
    ● #4601: Remove assertions that operate on class/object properties

    View full-size slide

  70. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    70
    色覚多様性に関するアクセシビリティを考慮したコードカバレッジレポートの仕様変更
    ● #4893: Make path to custom.css for HTML code coverage report
    configurable
    DataProviderの仕様変更
    ● Using a non-static method as a data provider is now deprecated
    ● Using a non-public method as a data provider is now deprecated
    ● Declaring a data provider method to require an argument is now deprecated

    View full-size slide

  71. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    71
    文法の誤りや差別的な用語を消す
    ● #4063: Remove assertNotIsReadable()
    ● #4066: Remove assertNotIsWritable()
    ● #4069: Remove assertDirectoryNotExists()
    ● #4072: Remove assertDirectoryNotIsReadable()
    ● #4075: Remove assertDirectoryNotIsWritable()
    ● #4078: Remove assertFileNotExists()
    ● #4081: Remove assertFileNotIsReadable()
    ● #4087: Remove assertRegExp()
    ● #4090: Remove assertNotRegExp()
    ● #4272: Remove PHPUnit\Util\Blacklist
    ● #4273: Remove PHPUnit\Framework\TestCase::$backupGlobalsBlacklist
    ● #4274: Remove PHPUnit\Framework\TestCase::$backupStaticAttributesBlacklist
    ● #4278: Remove --whitelist option
    ● #4536: Remove assertFileNotIsWritable()

    View full-size slide

  72. #phperkaigi #a
    © 2012-2023 BASE, Inc.
    今回触れたChangeLog
    72
    削除されたが代替手段の提供がないメソッド
    ● #4298: Remove at() matcher
    ● #4564: Remove withConsecutive()

    View full-size slide