Java.lang.Исключение NullPointerException в тесте JUnit с классом App.getContext().getString

#android #junit4

#Android #junit4

Вопрос:

Я пытаюсь протестировать метод, который находится в статическом контексте в моем классе, и я хочу протестировать его в классе Junit, но я получил исключение нулевого указателя.

Мой класс приложения :

 public class App extends MultiDexApplication {
    private static Context mContext;
    
    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
    }
    
    public static Context getContext() {
        return mContext;
    }
}
  

Мой метод :

 public class ColleagueChoice {
    static ColleagueApiService apiService = DI.getColleagueApiService();
    static List<Colleague> colleagueList = apiService.getColleagues();
    static String isEatingAt = App.getContext().getResources().getString(R.string.is_eating_at);
    static String isJoining = App.getContext().getResources().getString(R.string.is_joining);
    static String notDecided = App.getContext().getString(R.string.has_not_decided_yet);

    public static List<Colleague> setScarlettAndHughChoice() {
        Colleague scarlett = colleagueList.get(0);
        Colleague hugh = colleagueList.get(1);
        scarlett.setColleagueIsJoining(isJoining);
        hugh.setColleagueIsJoining(isJoining);
        List<Colleague> colleagueChoiceList = new ArrayList<>();
        colleagueChoiceList.add(scarlett);
        colleagueChoiceList.add(hugh);

        return colleagueChoiceList;
}
  

Итак, я получаю эту ошибку в строке :

 static String isEatingAt = App.getContext().getResources().getString(R.string.is_eating_at);
  

ВВЕРХ!

Ответ №1:

Просто удалите App класс, потому что это не очень хорошо для размещения getString в логическом коде, таком как services. Я просто добавляю перечисление своему коллеге по модели, а затем использую: holder.itemView.getContext().getString() в своем адаптере с условием переключения.