2012-04-17 6 views
2

Есть ли способ доступа к приватным переменным другого класса. Обычно я пишу testCases для моего проекта библиотеки, чтобы проверить все возможные критические условия, когда приложение будет аварийно. способ, которым мой проект должен пройти все тестовые примеры. Теперь, что моя проблема, я должен проверить на переменные, объявленные как частные в моем проекте library.Is есть какой-либо способ доступа к этим переменным (которые объявлены как частные).Как получить доступ к приватным переменным

+0

Хороший вопрос - с одной стороны, вы хотели бы вам код, чтобы быть в качестве компонента локальной области видимости, насколько это возможно, на другой тест люкс должен иметь доступ к внутренним устройствам. Есть ли какая-нибудь работа для этого? – Elemental

ответ

3

использование getters and setters ..Это является предпочтительным способом .. в сеттеры убедитесь, что вы держите безопасные значения и убедитесь, что они не будут нарушать ваш код в любом случае ..

0

на Android, вы хотите сделать свою деятельность методы, позволяющие другим классам думать, что они могут получить к нему доступ (фрагмент может, но это неправильная практика для меня, лучше использовать шаблон наблюдаемого наблюдателя). Затем вы получите закрытые поля и методы, к которым нужно будет обращаться только с помощью тестов.

BoundBox делает именно это! Здесь ниже приведен пример теста, который получает доступ к 2 частных полю деятельности, чтобы проверить это:

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

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

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

В Java мы можем получить доступ к Частным модификаторам с использованием открытых модификаторов. Публичными модификаторами могут быть геттер/сеттер или методы.

Например, есть класс пользователя с идентификатором id и show() private. Эти частные модификаторы мы можем получить доступ к внешнему пользователю класса с помощью общедоступного метода 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

Смежные вопросы