2017-06-16 12 views
2

これは私が、これは私のテストクラスで私の他の方法であるオーバーライド

@AdminAccessOnly 
@Repository 
public class TenResImpl extends TenAbstractResImpl implements TenIdRes { 

private Invocation request; 

protected void messageSend(String iD) { 

     Client client = utils.createClient(); 
     WebTarget webTarget = client.target(location).path("/testurl/" + tenantId); 
     Invocation.Builder requestBuilder = webTarget.request(); 
     Response response = null; 
      response = sendRequest(); //here I call the method!!!!!!! 

      if (response.getStatusInfo().getFamily() != Status.Family.SUCCESSFUL) { 
       // do something 
      } else { 
       //do something 
      } 
     } 



protected Response sendRequest() { 
    return request.invoke(); // here is the method which should be over written !!!! 
} 
} 

をテストしたかった私のコードでは動作しません。彼は私のテストクラスに行くのではなく、クラスTenResImplにあるメソッドSendRequest()にジャンプします....私は間違って何をしていますか?アクセスの可視性は両方で保護されており、両方が同じパッケージに入っています

+0

どこに電話をかけることができますか? – Mureinik

+0

はい私は上記のコメントをいくつか追加しました – Nali

+0

あなたのクラスのインスタンス化を教えてもらえますか? –

答えて

2

sendRequest()メソッドにはTenResImplという名前にジャンプします。メソッドをオーバーライドしても、上書きされているメソッドが再び呼び出されることはありません。

あなたが書いたことを簡単にするために、ABの2つのクラスを想像してみましょう。ここでBAです。 Aにはtest()メソッドがあります。 Btest()をオーバーライドした場合、Bオブジェクトのtest()を呼び出すと、Bクラスのtest()が実行されますが、Aオブジェクトを呼び出すと、Aクラスのメソッドは引き続き実行されます。

今度は、自分の状況にこれを適応してみましょう:

あなたTenResImplAであり、あなたのテストクラスがBです。あなたはにsendRequest()を呼んでいるので、私が前に説明したことは、あなたのTenResImplのメソッドに入ります。

+0

の上にあると思いますので、sendRequest()を直接テストクラスから呼び出さずにテストする方法はありませんか? – Nali

+0

残念ながら、私の答えが助けてくれることを願っています! – Kaiserbogey

関連する問題