NOTA: Esta solução é baseada no uso do Eclipse Indigo (3.8.2) e pode ter que ser implementada de maneira ligeiramente diferente para outro IDE, embora os princípios básicos sejam os mesmos.
Tive problemas semelhantes e descobri que fazer o seguinte sempre funciona:
( NOTA: Estas instruções são para construir um novo grupo de projetos do zero. Se você já construiu partes do grupo de projetos, pode ter que modificar seus projetos para que se conectem da mesma maneira. )
- Crie um novo projeto de biblioteca Android marcando a caixa de seleção "Is Library" durante a criação. (por exemplo, um projeto Android denominado "RemingtonAndroidTools").
- Construa o projeto Android Library e verifique se ele criou um arquivo jar na pasta bin. (por exemplo, um arquivo jar denominado "RemingtonAndroidTools.jar".)
- Crie um projeto Android vazio para testar o aplicativo Android que servirá como um aplicativo de teste Android. (Por exemplo, um projeto Android denominado "RemingtonAndroidToolsTestApp"). Você não precisará modificar o código-fonte ou os recursos do projeto Android Test App, a menos que tenha algo que deva ser adicionado para teste. Muitas coisas podem ser testadas sem nenhuma modificação no Android Test App Project. O projeto Android Test App é uma ponte entre seu projeto Android Library e o projeto Android Junit que torna possível o teste do projeto Android Library por meio do Android Junit.
- Vá para a guia Biblioteca do Java Build Path para o projeto Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo).
- Adicione o arquivo jar ("RemingtonAndroidTools.jar" neste exemplo) do Android Library Project ("RemingtonAndroidTools" neste exemplo) por meio do botão "Adicionar Jars ...".
- Crie um novo projeto Android Test (por exemplo "RemingtonAndroidToolsTester") que servirá como um Android Library Tester e selecione o projeto Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo) como o destino.
- Vá para a guia Biblioteca do Java Build Path para o projeto Android Library Tester ("RemingtonAndroidToolsTester" neste exemplo).
- Adicione o arquivo jar ("RemingtonAndroidTools.jar" neste exemplo) do Android Library Project ("RemingtonAndroidTools" neste exemplo) por meio do botão "Adicionar Jars ...".
- Encontre a última pasta do seu pacote Android no projeto Android Library Tester ("danny.remington.remington_android_tools_test_app.test" por exemplo) e adicione uma classe de teste ("MainActivityTest" por exemplo) que herda de ActivityInstrumentationTestCase2.
- Edite a classe de teste ("TestActivityTest" neste exemplo) para usar a atividade (por exemplo "TestActivity") do Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo) como o parâmetro para ActivityInstrumentationTestCase2.
- Edite a classe de teste ("TestActivityTest" neste exemplo) e crie um construtor padrão que faça uma chamada para super (Class) e passando na classe do Android Test App ("TestActivity.class" por exemplo).
Você deve terminar com três projetos (Android Library, Android Test App, Android Library Tester) semelhantes a este:
Você deve terminar com uma aula para testar sua biblioteca Android semelhante a esta:
package danny.remington.remington_android_tools_test_app.test;
import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
Você pode então adicionar qualquer teste que desejar. Você não precisará fazer referência ao Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo) para executar seus testes, a menos que eles requeiram acesso a um componente específico do Android (como a pasta Assets, por exemplo). Se você precisar acessar qualquer componente específico do Android, pode fazê-lo modificando o Android Test App ("RemingtonAndroidToolsTestApp" neste exemplo) e referenciando-o por meio da instrumentação fornecida pela API Android Junit padrão. (Você pode ler mais sobre isso aqui: http://developer.android.com/tools/testing/testing_android.html )