第35章 Seam アプリケーションのテスト


Seam アプリケーションのほとんどは少なくとも 2 種類の自動テストが必要です。 個々の Seam コンポーネントを独立してテストする ユニットテスト と、 アプリケーションのすべての Java 層 (ページの表示を除きすべて) を実行するスクリプト化された 統合テスト です。
どちらのテストも簡単に作成できます。

35.1. Seam コンポーネントのユニットテスト

Seam コンポーネントはすべて POJO (純粋な旧式 Java オブジェクト) であり、 ユニットテストを簡略化します。 また Seam はコンポーネント間でのやり取りやコンテキスト依存オブジェクトへのアクセスにバイジェクションを多用しているので、 通常のランタイム環境でなくてもとても簡単に Seam コンポーネントをテストすることができます。
次のような顧客アカウントのステートメントを作成する Seam コンポーネントを考えてみましょう。
@Stateless
@Scope(EVENT)
@Name("statementOfAccount")
public class StatementOfAccount {
   
  @In(create=true) EntityManager entityManager
   
  private double statementTotal;
   
  @In
  private Customer customer;
   
  @Create
  public void create() {
    List<Invoice> invoices = entityManager
      .createQuery("select invoice from Invoice invoice where " + 
                   "invoice.customer = :customer")
      .setParameter("customer", customer)
      .getResultList();
    statementTotal = calculateTotal(invoices);
  }
   
  public double calculateTotal(List<Invoice> invoices) {
    double total = 0.0;
      for (Invoice invoice: invoices) {
        double += invoice.getTotal();
      }
      return total;
     }
   // getter and setter for statementTotal
}
Copy to Clipboard Toggle word wrap
以下のように、 コンポーネントのビジネスロジックをテストする calculateTotal メソッドをテストすることができます。
public class StatementOfAccountTest { 
  @Test 
  public testCalculateTotal { 
    List<Invoice> invoices = 
      generateTestInvoices(); // A test data generator 
    double statementTotal = 
      new StatementOfAccount().calculateTotal(invoices); 
    assert statementTotal = 123.45; 
  }   
}
Copy to Clipboard Toggle word wrap
データの取り出しや永続化、 また Seam が提供する機能をテストしているわけではない点に注意してください。 ここでは POJO のロジックのみをテストしてます。 Seam コンポーネントは通常はコンテナのインフラストラクチャには直接依存しないため、 ほとんどのユニットテストは簡単です。
アプリケーション全体をテストする場合は、 この後の項をお読みください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat