Android Mock

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