test - pruebas unitarias android studio
Pruebas unitarias con base de fuego (2)
Aquí está mi solución, espero que esto ayude:
[ Actualización ] He eliminado mi anterior. Muestra a favor de éste. Es más sencillo y muestra la esencia principal.
public class TestFirebase extends AndroidTestCase {
private static Logger logger = LoggerFactory.getLogger(TestFirebase.class);
private CountDownLatch authSignal = null;
private FirebaseAuth auth;
@Override
public void setUp() throws InterruptedException {
authSignal = new CountDownLatch(1);
Firebase.setAndroidContext(mContext); //initializeFireBase(context);
auth = FirebaseAuth.getInstance();
if(auth.getCurrentUser() == null) {
auth.signInWithEmailAndPassword("[email protected]", "12345678").addOnCompleteListener(
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull final Task<AuthResult> task) {
final AuthResult result = task.getResult();
final FirebaseUser user = result.getUser();
authSignal.countDown();
}
});
} else {
authSignal.countDown();
}
authSignal.await(10, TimeUnit.SECONDS);
}
@Override
public void tearDown() throws Exception {
super.tearDown();
if(auth != null) {
auth.signOut();
auth = null;
}
}
@Test
public void testWrite() throws InterruptedException {
final CountDownLatch writeSignal = new CountDownLatch(1);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Do you have data? You''ll love Firebase. - 3")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull final Task<Void> task) {
writeSignal.countDown();
}
});
writeSignal.await(10, TimeUnit.SECONDS);
}
}
Estoy creando una aplicación de Android que utiliza Firebase como back-end y modelo, vista, arquitectura de presentador. Sin embargo, el hecho de que Firebase es un servicio en la nube complica las pruebas automatizadas en mi aplicación para Android. Hasta ahora he construido la mayoría del sistema de autenticación, pero no puedo ver cómo implementar pruebas unitarias para el código Firebase en mi aplicación. En términos de pruebas de extremo a extremo, también estoy atascado.
Dado que las pruebas son fundamentales para cualquier aplicación de Android y sin ellas los desarrolladores de aplicaciones no pueden estar seguros de que lo que han implementado está funcionando como se esperaba, realmente no puedo avanzar más sin las pruebas automatizadas.
En conclusión, mi pregunta es:
En general, ¿cómo implementa las pruebas automatizadas de Firebase en una aplicación de Android?
EDITAR:
Como ejemplo, ¿alguien podría probar el siguiente método de unidad?
public void addUser(final String name, final String birthday,
final String email, final String password) {
Firebase mUsersNode = Constants.mRef.child("users");
final Firebase mSingleUser = mUsersNode.child(name);
mSingleUser.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
mSingleUser.child("birthday").setValue(birthday);
mSingleUser.child("email").setValue(email);
mSingleUser.child("password").setValue(password);
return Transaction.success(mutableData);
}
@Override
public void onComplete(FirebaseError firebaseError, boolean b, DataSnapshot dataSnapshot) {
if(firebaseError != null) {
mSignUpPresenter.addUserFail(firebaseError);
} else {
mSignUpPresenter.addUserComplete();
}
}
});
}
Encontré este https://www.firebase.com/blog/2015-04-24-end-to-end-testing-firebase-server.html pero el artículo tiene más de un año. Solo lo escanee, le daré una lectura más detallada en un momento.
De cualquier manera, realmente necesitamos el equivalente del Backend de Google AppEngine local que puede ejecutar en Intellij (Android Studio). Las pruebas no pueden ser una ocurrencia tardía en 2016. Realmente, espero que uno de los increíbles desarrolladores de Firebase se dé cuenta de este hilo y de sus comentarios. Las pruebas deben ser parte de sus guías oficiales.