目次

Dart テスト

ソフトウェアテストはアプリ開発において重要な部分であり、アプリのリリース前に正しく動作していることを確認するのに役立ちます。この Dart テストガイドでは、いくつかのテストの種類の概要を示し、FlutterWeb、およびサーバーサイドアプリとスクリプト のテスト方法を学ぶことができる場所を示します。

dart testコマンド(または Flutter アプリの場合はflutter test)を使用して、コマンドラインでテストを実行できます。

テストの種類

#

Dart テストのドキュメントでは、ご存じの多くの種類のテストのうち、ユニットテスト、コンポーネントテスト、エンドツーエンドテスト(統合テストの一種)の3種類に焦点を当てています。テスト用語は異なりますが、これらは Dart テクノロジーを使用する際に遭遇する可能性のある用語と概念です。

  • ユニットテストは、関数、メソッド、クラスなど、テスト可能なソフトウェアの最小単位の検証に焦点を当てています。テストスイートには、他の種類のテストよりも多くのユニットテストを含める必要があります。

  • コンポーネントテスト(Flutter ではウィジェットテストと呼ばれます)は、コンポーネント(通常は複数のクラスで構成されます)が期待どおりに動作することを検証します。コンポーネントテストでは、多くの場合、ユーザーアクション、イベントを模倣し、レイアウトを実行し、子コンポーネントをインスタンス化できるモックオブジェクトを使用する必要があります。

  • 統合テストとエンドツーエンドテストは、アプリ全体またはアプリの大部分の動作を検証します。統合テストは通常、シミュレートされたデバイスまたは実機、またはブラウザ(Web の場合)で実行され、アプリ自体と、アプリをテストするテストアプリの2つの部分で構成されています。統合テストでは多くの場合パフォーマンスが測定されるため、テストアプリは通常、テスト対象のアプリとは異なるデバイスまたはOSで実行されます。

一般的に役立つライブラリ

#

テストは、コードの対象プラットフォーム(Flutter、Web、サーバーサイドなど)によって部分的に依存しますが、次のパッケージは Dart プラットフォーム全体で役立ちます。

  • package:test
    Dart でテストを記述するための標準的な方法を提供します。test パッケージを使用すると、

    • 単一のテストまたはテストのグループを記述できます。
    • @TestOnアノテーションを使用して、特定の環境でのみテストを実行するように制限できます。
    • 同期テストを記述する場合と同様に、非同期テストを記述できます。
    • @Tagアノテーションを使用してテストにタグを付けます。たとえば、タグを定義して一部のテストのカスタム構成を作成したり、完了に時間がかかるテストを識別したりできます。
    • 複数のファイルまたはパッケージ全体でタグ付きテストを構成するには、dart_test.yamlファイルを作成します。
  • package:mockito
    モックオブジェクトを作成し、固定シナリオで使用できるように簡単に構成し、テスト対象のシステムが期待どおりにモックオブジェクトと対話していることを検証する方法を提供します。package:test と package:mockito の両方を使用する例については、mockito パッケージ国際宇宙ステーション API ライブラリとそのユニットテストを参照してください。

Flutter テスト

#

Flutter アプリのテストの詳細については、次のリソースを使用してください。

  • Flutter アプリのテスト
    Flutter アプリでユニットテスト、ウィジェットテスト、または統合テストを実行する方法。
  • flutter_test
    package:test を基に構築された Flutter 用のテストライブラリです。
  • flutter_driver
    実機とエミュレーターで Flutter アプリケーションをテストするためのテストライブラリ(別のプロセスで)。
  • flutter_gallery
    Flutter ギャラリーの例に関するソースコードとテスト。
  • flutter/dev/manual_tests
    Flutter SDK の多くのテスト例。

その他のツールとリソース

#

Dart アプリケーションの開発とデバッグにも、次のリソースが役立つ場合があります。

IDE

#

デバッグに関して、最初の防衛線は IDE です。多くの一般的に使用されている IDEに Dart プラグインが存在します。

Dart DevTools

#

Dart DevTools は、Dart と Flutter 用のパフォーマンストゥールスイートです。詳細については、Dart DevTools のドキュメントを参照してください。

継続的インテグレーション

#

継続的インテグレーション(CI)を使用して、コミットごとにプロジェクトをビルドし、テストを実行することを検討してください。GitHub の 2 つの CI サービスは、GitHub ActionsAppVeyor です。

GitHub Actions の詳細についてはこちら

  • GitHub Actions を使用した Dart パッケージのテスト は、GitHub Actions を使用して Flutter アプリまたは Dart パッケージをテストするための簡単なワークフローを示しています。
  • Dart チームが提供する多くのパッケージは GitHub Actions を使用しています。例として、markdown パッケージのリポジトリにあるtest-package.ymlを参照してください。そのリポジトリが Travis CI から GitHub Actions に移行した方法を確認するには、PR #353を参照してください。