使用微调器和arrayAdapter进行仪器化测试

时间:2018-03-30 06:15:16

标签: java android unit-testing testing

我在互联网和论坛上搜索过一段时间的解决方案,但我无法找到解决问题的方法。我坚持了一段时间。

我正在尝试测试当我调用方法( showLanguage(String language))时,显示的语言是正确的。

此方法位于类( OnePrinterSettingFragment )中,它在微调器上调用两个方法,在微调器上调用ArrayAdapter。 (我已经删除了类中很多东西 OneprinterSettingFragment ,但基本上,我认为值得考虑的是方法 showLanguage 调用 getPosition ArrayAdapter ,以及 Spinner 上的 setSelection

public class OnePrinterSettingFragment extends BaseFragment implements View.OnClickListener, OnePrinterSettingFragmentContract.View {

      protected Spinner spnLanguagePrint;

      private ArrayAdapter<CharSequence> languageAdapter=ArrayAdapter.createFromResource(PosApplication.getInstance().getApplicationContext(),
       R.array.language_printing_array, android.R.layout.simple_spinner_item);

     @Override
      public void showLanguage(String language){
      int pos = languageAdapter.getPosition(language);
      spnLanguagePrint.setSelection(pos);
      }
}

这是测试:

RunWith(AndroidJUnit4.class)

@PrepareForTest(OnePrinterSettingFragment.class) public class OnePrinterSettingFragmentInstrumentUnitTest {

OnePrinterSettingFragment mView;
Context mContext;

@Before
public void setUp() throws Exception {

    mContext = InstrumentationRegistry.getContext();

    mView = new OnePrinterSettingFragment();

    mView.setSpnLanguagePrint(new Spinner(mContext));
    ArrayAdapter<CharSequence> languageList = new ArrayAdapter<CharSequence>(mContext,R.array.language_printing_array);

    mView.setLanguageAdapter(languageList);
    mView.setSpnLanguagePrint(new Spinner(mContext));
    mView.getSpnLanguagePrint().setAdapter(languageList);

}

@Test
public void showLanguage() throws Exception {

    mView.showLanguage("Vietnamese");
    assertTrue("Failed to show Vietnamese language", mView.getSpnLanguagePrint().getSelectedItem().toString()=="Vietnamese");
}

}

我没有嘲笑类 OnePrinterSettingFragment ,因为当我这样做时,android studio会抛出一个 abstractError ,当我喜欢它时,android studio说 mView.getSpnLanguagePrint()。getSelectedItem() null

我被封锁了,我试图理解为什么它是空的,但我没有得到它。我认为在测试的 setup 方法中,声明视图(微调器等)就足够了。但显然没有。

如果有人可以帮助我。

提前致谢

0 个答案:

没有答案