2012-04-17 14 views
2

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

+0

良い質問を - 一方では、あなたは、コンポーネントのローカルできるだけスコープ、他のテストのようにコーディングしたいと思いますスイートは内部にアクセスできる必要があります。これのための回避策はありますか? – Elemental

答えて

3

使用getters and setters ..itが好ましい方法である..あなたは安全な値を維持し、彼らはどのような場合でも、あなたのコードを壊さないことを確認してください。..

0

のAndroid上で、あなたはあなたの活動を行いたいです他のクラスがアクセスできると思うのを防ぐための非公開のメソッド(フラグメントは可能ですが、それは私には間違った習慣です。観察可能なオブザーバーパターンを使用する方が良いです)。そうすれば、テストだけでアクセスする必要のあるプライベートフィールドとメソッドが完成します。

BoundBox正確にそうです!ここでは、以下の活動の2つのプライベートフィールドは、それをテストするためにアクセスするテストの例は次のとおりです。Javaで

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

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

    // then 
    assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText()); 
} 
0

は、我々は公共の修飾子を使用してプライベート修飾子にアクセスすることができます。 パブリック修飾子は、ゲッター/セッターまたはメソッドです。

例えばidとshow()private型を持つユーザークラスがあります。これらのprivate修飾子は、publicメソッド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(); 
    } 
} 

あなたはより多くの詳細についても、この記事を参照することができます。 how to access private data outside class