Les tests unitaires pour EditTextView. Comment dois-je faire?
public class LoginActivityTest extends ActivityInstrumentationTestCase2<Login> {
Login mActivity;
private EditText username;
private EditText password;
@SuppressWarnings("deprecation")
public LoginActivityTest()
{
super("com.main.account.Login",Login.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mActivity = this.getActivity();
username = (EditText) mActivity.findViewById(R.id.username);
password = (EditText) mActivity.findViewById(R.id.password);
}
public void testPreconditions() {
assertNotNull(username);
assertNotNull(password);
}
public void testText() {
assertEquals("hello",username.getText());
assertEquals("hello123", password.getText());
}
}
D'erreur que je reçois est ceci:
04-18 16:03:47.132: I/TestRunner(12376): junit.framework.AssertionFailedError: expected:<hello> but was:<>
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.Assert.fail(Assert.java:47)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.Assert.failNotEquals(Assert.java:282)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.Assert.assertEquals(Assert.java:64)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.Assert.assertEquals(Assert.java:71)
04-18 16:03:47.132: I/TestRunner(12376): at com.crumbs.main.test.LoginActivityTest.testText(LoginActivityTest.java:46)
04-18 16:03:47.132: I/TestRunner(12376): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 16:03:47.132: I/TestRunner(12376): at java.lang.reflect.Method.invoke(Method.java:507)
04-18 16:03:47.132: I/TestRunner(12376): at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
04-18 16:03:47.132: I/TestRunner(12376): at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
04-18 16:03:47.132: I/TestRunner(12376): at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.TestCase.runBare(TestCase.java:127)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.TestResult$1.protect(TestResult.java:106)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.TestResult.runProtected(TestResult.java:124)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.TestResult.run(TestResult.java:109)
04-18 16:03:47.132: I/TestRunner(12376): at junit.framework.TestCase.run(TestCase.java:118)
04-18 16:03:47.132: I/TestRunner(12376): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
04-18 16:03:47.132: I/TestRunner(12376): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
04-18 16:03:47.132: I/TestRunner(12376): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
04-18 16:03:47.132: I/TestRunner(12376): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
Comment puis-je le tester? Aussi, comment puis-je définir les valeurs pour l'EditText afin que je puisse le tester ici?
La documentation est un peu dispersée.
OriginalL'auteur Hick | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
il fonctionne très bien.. Ses juste dire votre cas de test a échoué parce que le texte dans l'EditText n'est pas égal à un texte de votre comparaison..
essayer cette/..
bien... je vais modifier mon post..
Cela ne résout pas le problème.
qu'est-ce que que vous voulez tester exactement..?
Une procédure de test qui échoue pour certains noms d'utilisateur et pass pour certains l'utilisateur les noms. Ou n'est-ce pas la bonne façon d'aller à ce sujet?
OriginalL'auteur ngesh
Il ne fait pas beaucoup de sens de mannequin de test EditText.setText() la méthode, cependant, si vous insistez, faire quelque chose comme ceci:
Espère que cette aide.
OriginalL'auteur yorkw
Cette technique a le bonus agréable d'être en mesure de voir la chaîne de test tapé pendant que le test est en cours d'exécution.
Cette méthode permettra d'écrire une chaîne dans l'editText élément, où le mot de passe est votre chaîne de test. Il doit être ajouté à l'instrumentation de la classe de test (qui s'étend à ActivityInstrumentationTestCase2)
Vous pouvez ensuite récupérer le texte avec
Et de les comparer pour l'égalité avec
Espère que cette aide. Plus d'informations ici http://developer.android.com/training/activity-testing/activity-functional-testing.html
OriginalL'auteur Alt-Cat
Vous pouvez utiliser la même méthodologie que pour l'
TouchUtils
. Voici ce que j'ai fait:Créer un
TextUtil
classe avec une méthode statique de sorte que son facile à utiliser, ilEnsuite, vous pouvez l'appeler à l'intérieur de votre testMethod
Espère que cette aide
OriginalL'auteur Angel.King.47
Je sais que c'est un très vieux post, ce à propos de cette solution:
Je pense que c'est ce que vous cherchez:
quand(passwordField.getText()).thenReturn(Modifiable.Usine.getInstance().newEditable("tsa"));
OriginalL'auteur Karoly