Pessoal
Boa noite.
Alguém sabe como posso utilizar mocks em testes de unidade de aplicações Android?
Estou tentando utilizar o AndroidMock e Mockito mas eles não estão funcionando no Eclipse. Ao tentar executar os testes, recebe mensagens de erro de classes não localizadas.
Agradeço desde já
João Talles
as libs estão no teu claspath ?
qual versão do eclipse e versão das libs do mocs ?
Que projeto é esse ?
Junior
Boa noite.
Primeiramente gostaria de agradecê-lo pela resposta.
Deveria ter incluído mais detalhes na formulação da pergunta.
O meu ambiente de desenvolvimento é composto por: Windows 7 + JDK 7 + Eclipse 3.7.2 + Android SDK + ADT Plugin
Como faço para verificar se as libs estão no classpath?
O que fiz foi incluir no PATH do Windows os diretótios do JDK. Também incluí uma referêncua para os .jars AndroidMock e segui as recomendações do documento: http://android-mock.googlecode.com/files/AndroidMockinEclipse.pdf
Ao tentar executar os testes (Android JUnit Test) recebo a seguinte mensagem de erro:
java.lang.NoClassDefFoundError: com.google.android.testing.mocking.AndroidMock
at br.com.routing.android.services.test.ConfiguracaoServiceTestCase.testGetConfiguracao_When_There_Is_No_Configuration_In_The_Database(ConfiguracaoServiceTestCase.java:17)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Um dos testes que estou tentando executar é o seguinte:
package br.com.routing.android.services.test;
import com.google.android.testing.mocking.AndroidMock;
import br.com.routing.android.repository.IConfiguracaoRepository;
import br.com.routing.android.repository.entities.Configuracao;
import br.com.routing.android.services.ConfiguracaoService;
import br.com.routing.android.services.ILogService;
import br.com.routing.android.services.IViewContext;
import junit.framework.TestCase;
public class ConfiguracaoServiceTestCase extends TestCase
{
public void testGetConfiguracao_When_There_Is_No_Configuration_In_The_Database()
{
IViewContext context = AndroidMock.createMock(IViewContext.class);
ILogService logService = AndroidMock.createMock(ILogService.class);
IConfiguracaoRepository configuracaoRepository = AndroidMock.createMock(IConfiguracaoRepository.class);
ConfiguracaoService service = new ConfiguracaoService(context, logService, configuracaoRepository);
Configuracao configuracao = service.getConfiguracao();
assertNotNull(configuracao);
}
}
Se precisar de mais alguma informação me avise.
Agradeço desde já pela resposta
João Talles
Junior
Boa noite.
Esqueci de mencionar no post anterior: ao tentar executar o projeto de testes como JUnit Test recebo a mensagem de erro abaixo:
Error occurred during initialization of VM
java.lang.StackOverflowError
Atenciosamente
João Talles
Faz teu projeto usando maven, ai você já elimina problemas de dependência e outras coisas !
mockito-core
<!-- needs extra dependencies: objenesis & hamcrest -->
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.0</version>
<scope>test</scope>
mockito-all
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.0</version>
<scope>test</scope>
Junior
Boa noite.
Não conheço o maven.
Você está em SP? Tem interesse em consultoria na área de testes e automação de builds?
No aguardo
João Talles
joão estou em Fortaleza, trabalhando neste proejto: http://sisau2012.blogspot.com
Tenho interesse em qual quer trabalho que envolva Android e Webservice !
Add no Gtalk: web2ajax@gmail.com
Att.
Junior
Bom dia.
Eu consegui resolver o problema - era a ordem de exportação das bibliotecas. Tive que colocar o AndroidMock.jar como primeiro jar a ser instalado e tudo funcionou.
Muito bom saber que você tem interesse pois vou precisar de ajuda em breve. É um projeto grande para uma multinacional e que está passando por diversas alterações. Estou criando os testes exatamente para ter segurança nessas alterações pois exitem bastante regras de negócio.
Vou te adicionar no GTalk para conversarmos.
Muito obrigado pela ajuda
João Talles