-1

わかりました、助けが必要です。DAO クラスにこのメソッドがあり、テストする必要があります。

public boolean saveOrUpdateUser(User user) {
    boolean res = false;
    try {
        this.getHibernateTemplate().saveOrUpdate(user);
        res = true;
    } catch (DataAccessException e) {
        res = false;
        this.logger.error("DataAccessException", e);
    }
    return res;
}

以下は私のテスト方法です:

   public void saveAndUpdateUserTest() {
              User user =new User ();
              user.setUserid(12);
              user.setFirstname("John");
              user.setLastname("Smith");

              assertEquals(12,user.getUser_id());
              assertEquals("John",user.getFirstname());
              assertEquals("Smith",user.getLastname());

       }

このメソッドを saveAndUPdateUserTest で何らかの方法で呼び出す必要がありますが、どのパラメーターを渡せばよいかわかりません。誰でも助けることができますか?

public boolean saveOrUpdateUser(ユーザー ユーザー) {..}

ユーザー user とはどういう意味ですか? set メソッドと get メソッドを含むクラス user.java があります。

前もって感謝します。私はまだ初心者で、どのように進めればよいかアドバイスやヘルプが必要です。

4

3 に答える 3

2

実際には答えではありませんが、コードは、あなたが書いたテストが何であれ、間違っています. Hibernate によってスローされた例外は回復できないため、それらをキャッチして何も起こらなかったふりをするべきではありません。コードは

public void saveOrUpdateUser(User user) {
    this.getHibernateTemplate().saveOrUpdate(user);
}

または、本当にログが必要な場合:

public void saveOrUpdateUser(User user) {
    try {
        this.getHibernateTemplate().saveOrUpdate(user);
    } 
    catch (DataAccessException e) {
        this.logger.error("DataAccessException", e);
        throw e;
    }
}

別の注意:「このクラスはもう使用しないでください」HibernateTemplate文書化されています。Hibernate 4 ではもう存在しません。

コメントに同意します。オブジェクトとメソッドの引数を理解していない場合は、まず Java の基本を学びます。Spring と Hibernate は基本よりもはるかに上のレベルにあり、基本的な Java/プログラミングの概念を理解していないと壁にぶつかります。

于 2013-08-23T07:53:50.090 に答える
0
 public void saveAndUpdateUserTest() {

              //here is your variable of type User
              User user =new User ();
              user.setUserid(12);
              user.setFirstname("John");
              user.setLastname("Smith");

              assertEquals(12,user.getUser_id());
              assertEquals("John",user.getFirstname());
              assertEquals("Smith",user.getLastname());

              //you need to pass a variable with type User
              saveOrUpdateUser(user);

       }

これは開始するのに適したポイントです。

于 2013-08-23T07:46:05.167 に答える
0

コードで行っている方法で例外をキャッチしないでください。質問に戻りますが、AAA と呼ばれる主要な TDD パターンを思い出してください。

Arrange は、SUT (テスト対象のシステム) を初期化する場所です。Act はアクションが発生する場所です (テスト システムを呼び出します) Assert は、結果を確認する場所です。

public void anyKindOfTest() {
   // arrange

   // act

   // assert
}

あなたの場合、

public void shouldStoreUser () {
  // arrange
  User user = new User ("John", "Smith");
  UserStorage userStorage = new UserStorage();

  // act
  userStorage.store(user);

  // assert
  assertNotNull(user.id);  
}
于 2013-08-23T08:12:42.273 に答える