承認テスト ライブラリに関するよく寄せられる質問

どの Fluent な接頭辞を使用しますか: set、for、with

Fluent メソッドを追加するクラスにより、異なるルールが適用されます:

エンティティまたは作成者クラスを実装する必要があるか

ほとんどのエンティティに対して、エンティティ クラスを作成する作業は作成者クラスを作成する作業と同じです。 したがって、エンティティ クラスを作成する必要があります。 ただし、場合によっては、エンティティを作成するプロセスは複雑な可能性があります。 良い例は品目エンティティです。 品目エンティティを構成する異なるテーブルは 10 以上あるため、エンティティ クラスを作成するのは困難です。 テスト ケースでは既存の品目を更新する必要がほとんどないため、作成者クラスがあれば問題ありません。その実装ははるかに簡単です。

連鎖 Fluent セッターの順番は重要か

ほとんどの場合、連鎖 Fluent セッターの順番は問題になりません。 ただし、セッター メソッドの呼び出し時に既定値になることに注意してください。 したがって、メソッドの順序を変更すると、異なる結果になる場合があります。 これは販売明細行の例です。

オプション 1

salesLine.setQuantity(10).setUnitPrice(100).setAmount(2000).save()

このオプションにより金額 == 2,000 の販売明細行が生成されます。これは金額が最後に設定されるためです。

オプション 2

salesLine.setAmount(2000).setQuantity(10).setUnitPrice(100).save()

このオプションは 金額 == 1,000 の販売明細行を生成します。これは単価を設定した後、既定で金額は数量 × 価格に設定されるためです。

空のデータセットで実行するテストに ATL を使用できるか

承認テスト ライブラリ (ATL) は空のデータ セットで問題なく使用できます。 前提条件の自動設定は必要に応じて行われます。 たとえば、請求書の転記に対する前提条件は、salesOrder.postInvoice() への最初の呼び出し時にのみ設定されます。 詳細については 確認 を参照してください。

テスト クラス内のひとつ以上のテストで請求書を転記する必要がある場合は、setUpTestCase メソッドで Ensure メソッドを呼び出してパフォーマンスを向上させることもできます。

単体テストで ATL を使用できるか

ATL は主に統合やコンポーネント テストにおけるデータの設定と検証に使用する必要があります。 ただし、場合によっては、単体テストにも使用します。

単体テストおよびコンポーネント テストで ATL を使用することに注意が必要な理由

販売注文など、より複雑なエンティティでは modifiedFieldinsertupdate の各イベントに関連付けられたすべてのビジネス ロジックが呼び出されます。 たとえば、請求書トランザクションの作成は、実際の請求書転記ロジックの実行によっても行われます。 したがって、いくつかの操作でパフォーマンスが遅くなります。 ただし、これらの問題はマスター データを表すほとんどのエンティティで発生しません。 したがって、どんな種類のテストでもそれらのエンティティを使える必要があります。

詳細とクエリを使用して検証を行う場合、重大なオーバーヘッドは発生しません。 これらのコンポーネントは単体テストでも使用できます。