3

他のクラスのプライベート変数にアクセスする方法はありますか?実際には、アプリがクラッシュするときに起こりうるすべての重大な条件をテストするために、ライブラリプロジェクトのtestCasesを作成しています。プロジェクトがすべてに合格するように作成する必要があります。テストケース今、私の問題は、ライブラリプロジェクトでプライベートとして宣言されている変数をチェックする必要があります。これらの変数(プライベートとして宣言されている)にアクセスする方法はありますか。

4

3 に答える 3

4

ゲッターとセッターを使用します。これが推奨される方法です。セッターでは、安全な値を維持し、どのような場合でもコードが破損しないようにしてください。

于 2012-04-17T11:11:08.277 に答える
0

Androidでは、アクティビティのメソッドをプライベートにして、他のクラスがアクセスできると思わないようにします(フラグメントは可能ですが、それは私には間違った方法です。observable-observerパターンを使用することをお勧めします)。そうすると、テストによってのみアクセスする必要があるプライベートフィールドとメソッドができあがります。

BoundBoxはまさにそれを行います!以下は、アクティビティの2つのプライベートフィールドにアクセスしてテストするテストの例です。

@UiThreadTest
public void testCompute() {
    // given
    boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity());

    // when
    boundBoxOfMainActivity.boundBox_getButtonMain().performClick();

    // then
    assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText());
}
于 2013-09-17T05:58:09.893 に答える
0

Javaでは、パブリック修飾子を使用してプライベート修飾子にアクセスできます。パブリック修飾子は、getter/setterまたはmethodsです。

たとえば、idとshow()のプライベートタイプを持つユーザークラスがあります。これらのプライベート修飾子は、パブリックメソッドdisplay()を使用して外部クラスのユーザーにアクセスできます。

class user{
     private int id;
     private void show(){
      sysout.out.println("show called");
}

public void display(){

   System.Out.Println(" id ="+ id);
    show();

}

} 

public class Test{

Public Static Main(){

  User user = new User();

  //user.id;  //CE
  //user.show(); //CE

   user.display();
   }
}

詳細については、この記事も参照してください: クラス外のプライベートデータにアクセスする方法

于 2015-11-05T12:45:51.317 に答える