2012-04-17 9 views
2

다른 클래스의 개인 변수에 액세스 할 수있는 방법이 있습니까? 실제로 앱이 충돌 할 때 가능한 모든 중요한 조건을 테스트하기 위해 내 라이브러리 프로젝트에 대한 testCases를 작성하고 있습니다. 내 프로젝트가 모든 테스트 케이스를 통과해야합니다. 이제 내 문제는 내 라이브러리 프로젝트에서 private로 선언 된 변수를 확인해야합니다.이 변수에 액세스하는 방법은 없습니다 (개인으로 선언 됨). 세터 당신이 안전한 값을 유지하고 그들이 어떤 경우에 대비하여 암호를 해독하지 않습니다 있는지 확인하십시오에개인 변수에 액세스하는 방법

+0

좋은 질문 - 한편으로는 당신과 같이있을 당신에게 코드를 원하는 테스트 다른 한편으로 가능한 범위의 구성 요소 - 로컬 스위트 룸은 내부에 대한 액세스 권한이 있어야합니다. 이 문제가 해결 되었습니까? – Elemental

답변

0

, 당신은 당신의 활동을 만들고 싶어 ... .. 선호하는 방법입니다 다른 클래스가 액세스 할 수 있다고 생각하지 못하도록하는 private 메소드. (프래그먼트가 가능하지만 그것은 잘못된 관행입니다. 관측 가능한 옵저버 패턴을 사용하는 것이 낫습니다.) 그런 다음 테스트로만 액세스해야하는 개인 필드와 메소드로 끝납니다.

BoundBox 정확히 일치합니다. 여기에 아래의 활동이 개 개인 필드 테스트에 액세스하는 테스트의 예입니다 : 자바에서

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

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

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

우리가 공공 수식을 사용하여 개인 수정에 액세스 할 수 있습니다. 공개 수정자는 getter/setter 또는 메소드 일 수 있습니다.

예를 들어 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

관련 문제