2

やあみなさん。私は最近、Struts 2 アクションを検証しています。私のアクション クラスの 1 つで、正確に言うと、save メソッドには 2 つの ID が必要です。それは、アセスメントタイプ ID とコース ID です。これが今までの持ち物です。

@Test
public void testSave() {
    Assessment assessment = new Assessment();
    assessment.setAssessmentType(assessment.getAssessmentType());
    assessment.setCourse(assessment.getCourse());
    assessment.setAmount(2);
    assessment.setDescription("A test Description");
    assessment.setPercentage(20.0);

    action.setAssessment(assessment);
    action.save();

    assertNotNull(action.getAssessment().getId());
}

すべての助けをいただければ幸いです。

ちょっとごめんなさい、私は質問をしたことを教えてくれました。しかし、私が実際に達成しようとしているのは、評価のために持っているアクション クラスをテストすることです。たとえば、評価を追加するときにクライアントがアプリケーションを使用する場合、コース ID はユーザーに表示されませんが、評価を保存するにはコース ID が存在する必要があります。また、評価を保存するには、評価タイプを選択する必要があります。したがって、save メソッドが完全に機能するには、コース ID と評価タイプの両方が存在する必要があります。

したがって、問題は、コースIDとアセスメントタイプIDをテストして実装する方法が本当にわからないということです。

再度、感謝します。すべての助けをいただければ幸いです

アクションの保存方法については、以下で説明します。

public String save(){
    if (cancel != null) {
        return "cancel";
    }

    boolean isNew = (assessment.getId() == null);

    assessmentType.addAssessment(assessment);
    course.addAssessment(assessment);

    assessment = assessmentManager.save(assessment);


    return "save";

}
4

1 に答える 1

1

コードを単体テストするときは、テストするメソッドの仕様から始める必要があります。テストしようとしているメソッドを見て、仕様が何であるかを「推測」しましょう。

  1. 一部の変数 cancel が null の場合は、メソッドを実行します。それ以外の場合は、すぐに戻ります
  2. 評価オブジェクトを null にすることはできません (そうしないと、行boolean isNew = (assessment.getId() == null);が失敗し、null をチェックしていません)。別の注意点として、 isNew を他の場所で使用していないため、この行はコード内で何の役にも立たないようです。
  3. また、assessmentType も null ではありません。つまり、事前に存在している必要があります。
  4. コースが null でないか、事前に存在する必要があります
  5. 評価マネージャーが null ではありません

これらはあなたのコードからの推測に過ぎないので、それ以上のものがあると確信しています。

ここで、これらを 1 つずつテストするテストを作成します。通常、1 つのことを正確にテストするテスト メソッドが必要です。いくつかの追加情報も説明から欠落していますが、もう一度推測してみましょう.

struts2 アクション クラスでは、このアクションが呼び出される前にキャンセル オブジェクト、assessType、course、およびassessmentManager を設定しています。次に、アクションを呼び出す前に、テスト メソッドでこれらすべてを設定する必要があります。

したがって、最初のポイントをテストするには、変数 cancel を設定します。多分このように:

 action.setCancel(Some Object);
 action.save();
 //now test the result condition to see if it behaved as expected.

次に、2 番目のポイントをテストするには、次のようなコードを使用できます。

 //testing that null assessment throws NullPointerException
 action.setAssessment(null);
 action.save();
 //now test that the exception was thrown 

次に、非ヌル評価が機能することをテストします...など。これらの各テストは、それ自体がメソッドです。

これが役立つことを願っています。

于 2010-01-29T16:30:49.173 に答える