我在互联网和论坛上搜索过一段时间的解决方案,但我无法找到解决问题的方法。我坚持了一段时间。
我正在尝试测试当我调用方法( 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 方法中,声明视图(微调器等)就足够了。但显然没有。
如果有人可以帮助我。
提前致谢