Je suis nouveau dans les tests d'unités Android et essayant d'écrire quelques cas de test pour la disposition de l'onglet Android avec Voici mon code P> Merci d'avance. p> p> Robolectric code>. Je suis capable de vérifier le nombre d'onglets et des titres d'onglets. Mais je ne suis pas capable de vérifier du contenu dans des onglets. Quelqu'un peut-il m'aider à obtenir le contenu du fragment et à vérifier certains éléments dans cela?
tabadapter.getem (0) code > donne
null code> valeur. p>
3 Réponses :
import android.app.Activity; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import static junit.framework.Assert.*; @RunWith(WithTestDefaultsRunner.class) public class ViewPagerTest { private ViewPager pager; private TestPagerAdapter adapter; @Before public void setUp() throws Exception { pager = new ViewPager(new Activity()); adapter = new TestPagerAdapter(); } @Test public void shouldSetAndGetAdapter() throws Exception { assertNull(pager.getAdapter()); pager.setAdapter(adapter); assertSame(adapter, pager.getAdapter()); } @Test public void test_getAndSetCurrentItem() throws Exception { pager.setCurrentItem(2); assertEquals(2, pager.getCurrentItem()); } @Test public void setCurrentItem_shouldInvokeListener() throws Exception { TestOnPageChangeListener listener = new TestOnPageChangeListener(); pager.setOnPageChangeListener(listener); assertFalse(listener.onPageSelectedCalled); pager.setCurrentItem(2); assertTrue(listener.onPageSelectedCalled); } private static class TestPagerAdapter extends PagerAdapter { @Override public int getCount() { return 0; } @Override public boolean isViewFromObject(View view, Object object) { return false; } } private static class TestOnPageChangeListener extends ViewPager.SimpleOnPageChangeListener { public boolean onPageSelectedCalled; @Override public void onPageSelected(int position) { onPageSelectedCalled = true; } }
Merci pour la réponse. Mais je suis confronté à un problème tout en obtenant le contenu de l'adaptateur de pager de fragment qui est attaché à la disposition de l'onglet. J'ai mis à jour ma question avec mon code. Pourriez-vous s'il vous plaît vérifier maintenant?
@Kameswari J'avais mise à jour mon code avec un adaptateur de fragment Pager, pouvez-vous vérifier maintenant?
Merci beaucoup pour l'échantillon. Mais mes besoins sont de vérifier certains éléments de l'interface utilisateur dans le fragment. J'essaie de l'obtenir de l'adaptateur de pager. Mais je reçois une valeur null.
@ Kameswari J'ai compris votre exigence, vous devez configurer un pager et votre adaptateur à l'aide de l'échantillon ci-dessus, puis vous seul pouvez vérifier l'élément UI.
Pourriez-vous s'il vous plaît laissez-moi savoir quelle bibliothèque de grades je dois inclure pour obtenir com.xtremelabs.robolectric.WithTestDefaultSrunner Class?
com.xtremelabs.robolectric.WithTestDefaultSrunner sa propre classe Vous pouvez prendre Exple d'ici SearchCode.com/codeSearch/ Voir / 25270445 / #
Je sais que ce n'est probablement pas la réponse que vous recherchiez, mais vous ne devriez pas écrire des tests d'unité normaux pour les classes / vues associées à Android. Ce que vous devriez faire, c'est écrire des tests d'unités instrumentées (ou vous pouvez appeler des tests d'interface utilisateur) qui s'exécute sur de vrais appareils Android (ou des émulateurs) dans lesquels vous avez accès aux classes associées à Android, à l'activité actuelle (contextuelle) d'éléments de vue sans faire d'astuces. Et le cadre, l'espresso rend vraiment facile d'exécuter un tel test.
Utilisation d'expresso, vous pouvez écrire P>
onView(withId(thatWillOpenPageIWant)).perform(click()) onView(withId(R.id.search_hint_text_view)).check(matches(isDisplayed()))
Merci pour la réponse. J'ai essayé de mettre en œuvre un cas d'essai avec expresso et lorsque j'ai essayé de courir, son erreur de donner une erreur comme "java.lang.illegalstateException: aucune instrumentation enregistrée! Doit être exécuté sous une instrumentation enregistreuse." Pourriez-vous s'il vous plaît dites-moi comment le résoudre?
Cela peut arriver à cause de plusieurs raisons. Vous devriez demander à cela (de préférence chercher cela car il s'agit d'une erreur courante) avec votre fichier de grades. Je suppose que vous seriez essayé d'écrire votre test d'interface utilisateur dans le dossier de test, au lieu du dossier AndroidTest, vous obtenez donc cette erreur. Comme je l'ai dit dans mes tests d'interface utilisateur de réponse devrait être sous le dossier AndroidTest
Ceci est mon code que j'ai écrit pour le test de l'unité A un ps. Ceci est un Test d'instrumentation . Ces tests sont essentiellement utilisés pour tester des fonctionnalités spécifiques android telles que UI et les classes comme ViewPager Code> ayant
ViewPager Code> (utilisé ici). P>
package com.example.onboardingfold.fragment.adapter;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.onboardingfold.fragment.OnboardingPage1Fragment;
import com.example.onboardingfold.fragment.OnboardingPage2Fragment;
public class MyCustomFragmentPagerAdapter extends FragmentPagerAdapter {
// for storing the total number of pages in the viewPager
private static int NUM_PAGES = 2;
public MyCustomFragmentPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
}
// Returns the fragment to display for that particular page
@NonNull
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show OnboardingPage1Fragment
return OnboardingPage1Fragment.newInstance(1);
case 1: // Fragment # 1 - This will show SecondFragment
return OnboardingPage2Fragment.newInstance(2);
default:
return null;
}
}
// returns total number of pages
@Override
public int getCount() {
return NUM_PAGES;
}
// returns the width of the page
@Override
public float getPageWidth(int position) {
return super.getPageWidth(position);
}
}
Duplicate Possible Stackoverflow.com/questions / 33811580 / ...
@Alexhart Merci pour la réponse. Le lien que vous avez partagé concerne les fragments normaux. Mais j'essaie d'obtenir le fragment d'un objet FragmentPagerAdapter qui est attaché à la disposition de l'onglet. Pourriez-vous s'il vous plaît vérifier ma question mise à jour avec mon code?