AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1 AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0 (13-12-2018)
Esta é a versão estável do AndroidX Test 1.1.0
- Principal
- O ActivityScenario agora é compatível com atividades que iniciam outra atividade
AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01 Truth 1.1.0-beta01, JUnit 1.1.0-beta01 (06-12-2018)
- Principal
- Novo artefato de extensão core-ktx kotlin. Inclui uma API ActivityScenario.launchActivity compatível com kotlin.
- Nova API ActivityScenario para iniciar atividades com intents personalizadas.
- Nova API ActivityScenario para receber um resultado de atividade.
- Agora, o ActivityScenario pode ser fechado.
- Espresso
- Mudança de withResourceNameMatcher e HumanReadables para serem compatíveis com a API 28.
- A descrição de ReplaceTextAction foi atualizada para incluir stringToBeSet.
- Adição de compatibilidade com o Espresso no modo de looper pausado do Robolectric.
- JUnit
- Nova API ActivityScenarioRule para iniciar e fechar automaticamente uma Activity na configuração e desmontagem de teste.
- Novo artefato de extensão junit-ktx do kotlin. Inclui uma API ActivityScenarioRule compatível com Kotlin.
- Runner
- Pacotes -e e testFile -e têm comportamento consistente ao receber pacotes.
- Verdade
- Adição de APIs bool, parcelable e parcelableAsType BundleSubject.
AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0 (24-10-2018)
- Todas
- Definição de minSdkVersion para 14 e targetSdkVersion para 28.
- Espresso
- Correção de withContentDescription para funcionar com tipos não-string.
- Adição de compatibilidade para uso do Espresso no Robolectric.
- Problema 72798625: o ViewMatchers.withText do Espresso não funciona quando textAllCaps está ativado
- Adição de compatibilidade para injetar uma sequência de eventos de movimento.
- Intents
- Adição da API beta para recuperar a lista de intents. Recomendada para novas declarações de verdade.
- Runner
- Adição de compatibilidade com apps instantâneos.
- Suspensão do uso de androidx.test.runner.AndroidJUnit4 e substituição por androidx.test.ext.junit.runners.AndroidJUnit4
- Monitoramento
- Suspensão do uso de androidx.test.InstrumentationRegistry e substitua por androidx.test.platform.app.InstrumentationRegistry and androidx.test.core.app.ApplicationProvider
- AndroidTestOrchestrator
- Ativação do gerenciamento da cobertura do Orchestrator apenas se os argumentos "coverage" e "coverageFilePath" forem transmitidos.
- A espera do depurador só será realizada quando -debug for definido, mas não para listar casos de teste de ATO. Uma nova sinalização orquestradorDebug foi adicionada para depurar o próprio Orchestrator.
- Principal
- Novo artefato. Inclui novas APIs com suporte a testes locais e no dispositivo para:
- Recuperar contexto: ApplicationProvider
- Controlar ciclos de vida de atividades: ActivityScenario (Beta)
- Builders para MotionEvent, PackageInfo
- Classe de utilitário Parceables
- Novo artefato. Inclui novas APIs com suporte a testes locais e no dispositivo para:
- Verdade
- Novo artefato. Inclui assuntos de verdade personalizados para Notification, Intent, Bundle, Parcelable e MotionEvent.
- JUnit
- Novo artefato. Inclui classe runner JUnit androidx.test.ext.junit.runners.AndroidJUnit4 compatível com testes locais e no dispositivo.
Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1 (16-04-2018)
- Espresso
- Mudanças importantes na API:
- Fomos informados no problema 64062890 que estávamos usando o Guava Optional na API pública. Foi um descuido terrível da nossa parte. Sendo assim, há uma mudança de API pública importante nesta versão para solucionar esse problema. Acrescentamos um wrapper feio em torno da classe Guava Optional, chamado de EspressoOptional. Ele pode ser encontrado no namespace "android.support.test.espresso.util". Os desenvolvedores que estavam usando a API Guava Optional com vazamento precisam alterar as importações e referências para usar o EspressoOptional durante a atualização para essa nova versão. Lamentamos pela inconveniência que isso possa causar.
- As APIs onView() e onData() agora estão marcadas como @CheckReturnValue para evitar erros.
- O arquivo POM do espresso-core foi corrigido para não extrair a dependência "rules", que passa a ser extraída pelo POM do espresso-intents. Essa alteração deve ser NoOp para desenvolvedores, uma vez que espresso-intents não podem ser usados sem o espresso-core.
- Problema 65486414: o Espresso não tem a dependência guava.
- Problema 65576174: o IdlingResourceRegistry.sync do Espresso causa falha no segundo teste.
- Problema 65568629: o Espresso.onIdle não está usando IdlingRegistry.
- Problema 69333598: o Espresso 3.0.1 é incompatível com play-services-auth:11.6.0 no módulo da biblioteca do Android.
- Problema 64062890: o tipo Internal Optional é exposto pela interface AdapterViewProtocol.
- Problema 64091847: o Espresso 3.0.0 NÃO pode depender do executor de teste.
- Problema 73722050: o espresso-contrib 3.0.2-alpha1 empacota classes android.arch.{lifecycle/core}.
- Mudanças importantes na API:
- Espresso-remote
- Esse é um artefato novo. Separamos toda a funcionalidade multiprocesso do Espresso fora do artefato espresso-core. Essa opção é mais limpa e deve reduzir significativamente o tamanho geral e a contagem de métodos do espresso-core.
- Runner
- Trunca o rastreamento da pilha se ele for muito grande para uma transação do binder. Como o AJUR precisa relatar falhas para o AM por meio de um IPC binder, é necessário garantir que o limite de transações do Binder, de 1 MB por processo, não seja excedido.
- Problema 65828576: falha de TestRequestBuilder ao executar o teste na classe com @Ignore.
- Problema 37057596: não gerenciamos falhas em @BeforeClass.
- Regras
- É preciso lançar uma referência sobre a atividade em teste depois das mudanças no ciclo de vida. Durante o teste, agora é possível manipular a Activity diretamente, usando a referência recebida em #getActivity(). Agora, se a Activity for concluída e reiniciada, a referência retornada por #getActivity() sempre apontará para a instância atual da Activity.
- Problema 64389280: o GrantPermissionRule não fornece WRITE_EXTERNAL_STORAGE.
- Problema 37065965: ActivityTestRule vaza atividade depois da mudança de orientação.
- Problema 75254050: o ActivityTestRule não atualiza a instância de Activity durante mudanças na configuração.
- Problema 64464625: não é possível fazer o trabalho da IU no método finish() da Activity.
- AndroidTestOrchestrator
- Transmita sinalizações
-e coverage true -e coverageFilePath /sdcard/foo/
para gerar arquivos de cobertura no local especificado (o app precisa de permissão para gravar no local determinado). A convenção de nomenclatura do arquivo de cobertura agora é:com.foo.Class#method1.ec
. Observe que ele só é compatível quando executado no modo isolado. Além disso, não é possível usá-lo com a sinalizaçãocoverageFile
do AndroidJUnitRunner, uma vez que os arquivos de cobertura gerados modificam uns aos outros. - Transmita a sinalização
-e clearPackageData
se quiser que o Orchestrator execute os comandospm clear context.getPackageName()
epm clear targetContext.getPackageName()
entre as invocações de teste. O contexto no comando Clear é o app em contexto de teste. - Correção: ao executar um teste vazio, também conhecido como "No @Test", dentro do destino, o resultado é diferente do modo legado.
- Problema 72758547: o Test Orchestrator faz com que os dados de cobertura do Jacoco fiquem incompletos, com apenas os dados da última execução do teste.
- Problema 67916042: Android Test Orchestrator: a execução foi interrompida na falha de Process devido a OutOfMemory.
- Problema 77752735: o Orchestrator falha para TransactionTooLargeException.
- Problema 77549481: o Test Orchestrator precisa executar "pm clear" depois de cada teste.
- Transmita sinalizações
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05-12-2017)
Espresso
Intents
agora tem uma resposta que pode ser chamada, permitindo que os testes sejam executados depois da captura de uma intent acionada, mas antes de retornar um objetoInstrumentation.ActivityResult
.
Runner
Divisão do artefato de monitoramento do Maven
com.android.support.test:monitor:<version>
para usuários que precisam deMonitoringInstrumentation
sem a execução do teste e os recursos do JUnit.Se você usar
com.android.support.test:runner:<version>
, tudo funcionará conforme o esperado, porque o Gradle extrai automaticamente o módulomonitor
como uma dependência do módulorunner
.Adição da sinalização
newRunListenerOrderMode
. Quandotrue
, os listeners definidos pelo usuário são executados antes dos listeners padrão. Esperamos que esse comportamento se torne o padrão.Problema 65828576:
TestRequestBuilder
falha ao executar testes em uma classe anotada com@Ignore
(autônomo sem execução de teste ou recursos do JUnit).
AndroidTestOrchestrator
- Agora gerencia testes vazios da mesma maneira que o
AndroidJUnitRunner
não orquestrado. - Agora, o Orchestrator pode gerenciar uma saída padrão muito grande do
AndroidJUnitRunner
.
- Agora gerencia testes vazios da mesma maneira que o
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28-08-2017)
Espresso
- Adição de uma opção
IdlingPolicy
para suprimironTimeout()
quando um depurador de etapa é anexado à VM. - Problemas 64024656, 64247586
e 64525881: não informa falhas relacionadas a
problemas no carregamento de classes, a menos que um usuário esteja carregando classes específicas ao
incluir o argumento do executor da classe
-e
. - Problema 64877246: adiciona classes ausentes ao arquivo JAR de origens.
- Adição de uma opção
Runner
- Simplificação da lógica
ShardingFilter
. - Problema 65025743: o filtro
@RequiresDevice
agora é compatível com emuladores FTL.
- Simplificação da lógica
AndroidTestOrchestrator
- Não duplica relatos de falha. Agora, quando um processo de teste falha depois de um erro, apenas uma falha é informada.
- Correção do Javadoc para Orchestrator.
- Agora, os testes são indicados como perdidos se o processo remoto falha.
- Agora gerencia casos de teste ignorados.
- Agora exclui casos de teste ignorados do rodapé para corresponder aos resultados legados.
- Correção de problemas de permissão de tempo de execução. Agora, os relatórios de teste são gravados no cartão SD no Android 7.0 (API de nível 24) e mais recente.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25-07-2017, Anúncio)
Mudanças importantes
- Todos os artefatos
- Redução da compatibilidade para níveis de API inferiores ao 15. No entanto, o SDK mínimo ainda aponta para a API de nível 9, para que os usuários tenham tempo para fazer upgrade.
- Espresso
- A classe descontinuada
android.support.test.espresso.contrib.CountingIdlingResource
foi excluída e movida paraandroid.support.test.espresso.idling.CountingIdlingResource
.- Use
getInstance().register()
em vez deregisterIdlingResources()
- Use
- Agora, a Guava foi transferida pelo jarjar para um
namespace "interno" diferente. Se você estiver usando a API Guava
sem querer com namespaces Espresso, poderá encontrar falhas
- Remova todas as referências à Guava sombreada (
.core.deps.guava.
). - Atualize sua versão da Biblioteca de Suporte para 25.4.0 ou mais recente.
- Remova todas as referências à Guava sombreada (
- A classe descontinuada
Problemas conhecidos
- AndroidTestOrchestrator
- Os argumentos do executor
-e numShards
e-e shardIndex
não são compatíveis no momento. - Testes parametrizados não são compatíveis no momento.
- Os argumentos do executor
Novos recursos
- Espresso
- Compatibilidade do novo Multiprocess
Espresso na API 26 para
espresso-core
eespresso-web
, mas não paraespresso-contrib
. - Nova API
IdlingRegistry
leve- Publicada como parte do
com.android.support.test.espresso:espresso-idling-resource:3.0.0
. - Métodos descontinuados:
- Publicada como parte do
- Nova API para sincronizar com
Executors
- Novo artefato Maven:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0
- Contém
as classes
IdlingScheduledThreadPoolExecutor
eIdlingThreadPoolExecutor
- Novo artefato Maven:
- Nova API para sincronizar com solicitações e respostas de rede
- Novo artefato Maven:
com.android.support.test.espresso.idling:idling-net:3.0.0
- Contém a classe
UriIdlingResource
- Novo artefato Maven:
- Novos correspondentes de visualização
espresso-core
:hasBackground()
corresponde ao recurso desenhável em segundo plano de um objetoView
.hasTextColor()
corresponde à cor de um objetoTextView
.
- Novos métodos de ação de visualização:
- Ação de visualização
scrollTo()
melhorada para funcionar com descendentes deListView
. repeatedlyUntil()
: executa aViewAction
específica em uma visualização até que ela corresponda aosViewMatchers
em questão.
- Ação de visualização
- Novos métodos do Espresso:
pressBackUnconditionally()
: semelhante aopressBack()
, mas não gera uma exceção durante a navegação do Espresso.noActivity()
: remove a necessidade de aguardar uma atividade antes de executar umaViewAction
ouViewAssertion
.onIdle()
: repete a linha de execução principal até o app ficar inativo.onIdle(Callable<T>)
: igual aonIdle()
, mas usa outroCallable
como parâmetro, que é executado depois do app ficar inativo.
webScrollIntoView()
: novo Atomespresso-web
que permite rolar dentro de umaWebView
.
- Compatibilidade do novo Multiprocess
Espresso na API 26 para
- Executor
-
InterceptingActivityFactory
eSingleActivityFactory
: facilitam o teste de uma atividade isolada do mundo exterior, substituindo métodos comostartService()
esendBroadcast()
. -
Foi adicionado suporte ao uso de JUnitParams
com
AndroidJUnitRunner
. -
Começa a processar
@UiThreadTest
no nível do executor de testes principal e suspende o uso de@UiThreadTestRule
. Isso permite o uso da anotação@UiThreadTest
diretamente em métodos anotados com@Before
e@After
-
A anotação
@SdkSupress
agora oferece suporte ao valormaxSdkVersion
(problema 37067792). -
-e classLoader
: fornece a capacidade de transmitir carregadores de classes usando argumentos do executor. -
-e filter
: foi adicionado suporte para que filtros JUnit personalizados sejam especificados usando argumentos do executor. -
-e runnerBuilder
: permite que desenvolvedores forneçam as próprias implementações deRunnerBuilder
, que podem determinar se e como elas podem ser executadas em uma classe específica.
-
- Regras
ProviderTestRule
: nova API para testar objetosContentProvider
.getActivityResult()
eActivityResultMatchers
: nova API para recuperar o resultado de uma atividade que chamousetResult()
.
- AndroidTestOrchestrator
- O Android Test Orchestrator
oferece uma nova maneira de coletar e executar testes, com ênfase em
correção e isolamento. O Orchestrator é um processo de instrumentação
independente que gera um processo do executor de instrumentação para cada teste e
coleta os resultados.
- Falhas no aplicativo interrompem a instrumentação do executor, mas não o Orchestrator, permitindo que o conjunto de testes continue.
- Exige a instalação do APK do Orchestrator:
'com.android.support.test:orchestrator:1.0.0'
. - A versão 1.0 tem apenas uma interface de linha de comando. A integração com o Android Studio e o Firebase Test Labs é planejada.
- O Android Test Orchestrator
oferece uma nova maneira de coletar e executar testes, com ênfase em
correção e isolamento. O Orchestrator é um processo de instrumentação
independente que gera um processo do executor de instrumentação para cada teste e
coleta os resultados.
Correções de bugs
- Espresso
- Melhoria na sincronização da visualização raiz para reduzir significativamente a inconsistência.
- Correção da corrupção de
IdlingResourceRegistry
. - Melhoria na sincronização com
objetos
IdlingResource
. - Problema 37132680: o Espresso não espera a conclusão da criação da caixa de diálogo para realizar a próxima ação
- Problema 37103280: o Espresso precisa enviar as regras de consumo do ProGuard para que o consumidor não precise adicioná-las
- Problema 37094726: o Espresso Intents contém um rótulo de aplicativo desnecessário
- Problema 37093953: Espresso: nenhuma verificação disponível para texto de erro nulo/vazio
- Problema 37071776: o
espresso-core
incorpora arquivos.pom
do Guava - Problema 187249: NPE em
release()
- Problema 37063389: o uso do Guava e do
espresso-web
como dependênciasandroidTest
impede a compilação - Problema 37070533: adição de compatibilidade com
NavigationView
na Biblioteca de Suporte do Android Design
- Executor
-
Correção da capacidade de usar
@UiThreadTest
em combinação com@Test(timeout = 123)
- Correção do argumento de executor
-e notClass
. -e log
foi corrigido para oferecer suporte a conjuntos de testes JUnit3 e JUnit4, bem como os executoresParameterized
eEnclosed
.- Problema 37663530: aguarda a conclusão de todas as atividades antes e depois de cada método de teste.
- Problema 37132680: o Espresso não espera a conclusão da criação da caixa de diálogo para realizar a próxima ação
-
Problema 37123213:
@RequiresDevice
é ignorado na ABI x86_64. -
Problema 37101485: alguns argumentos fornecidos pelo manifesto
para
AndroidJUnitRunner
, como tamanho do teste, anotação e depuração, são ignorados. - Problema 37082857: a execução do teste semiparalelo do Espresso falha em objetos estáticos.
-
Problema 37063396: o contexto não é inicializado
com
ProviderTestCase2
(causaNullPointerException
).
-
Correção da capacidade de usar
- Regras
- Correção do ciclo de vida de
ActivityTestRule
para unificar o comportamento na inicialização regular e lenta deActivityTestRule
- Problema 37079943: correção de
ServiceTestRule
para permitir uma nova vinculação - Problema 37109342: adição de
getActivityResult()
eActivityResultMatchers
- Correção do ciclo de vida de
- UiAutomator
setUiAutomationFlags()
para uso comUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
: permite que oUiAutomator
seja usado enquanto outros serviços de acessibilidade estão em execução- Problema 37082813:
setText()
em objetosEditText
vazios geraNullPointerException
se o nível da API for 19 ou anterior
Outras mudanças importantes
- Os binários agora são publicados pelo repositório Maven do Google.
- Redução no tamanho dos arquivos JAR
espresso-core
eespresso-web
: as dependências incorporadas agora têm o ProGuard aplicado - Todos os arquivos
.aar
agora incluem regras do ProGuard. - Adição de arquivos
proguard_library.cfg
aos artefatos lançados. - A interface
Tapper
tem uma nova versão desendTap()
para implementar
Contribuições externas
- Espresso
- Mudança 221522 (link em inglês)
- Mudança 221452 (link em inglês)
- Mudança 235980 (link em inglês)
- Mudança 256438 (link em inglês)
- Mudança 236730 (link em inglês)
- Mudança 233160 (link em inglês)
- Mudança 219761 (link em inglês)
- Mudançaalt 216916 (link em inglês)
- Runner
- Mudança 220630 (link em inglês)
- Regras
- Mudança 246570 (link em inglês)
Espresso 2.2.2, Runner/Rules 0.5 (22-02-2016, versão silenciosa)
Novos recursos
- espresso
- Problema 194253: adição de compatibilidade com NavigationView na Biblioteca de Suporte do Android Design
- Adição de verificações para animações e transições ativadas.
- Nova API
ViewMatcher
:withResourceName()
.
Correções de bugs
- espresso
- Problema 195331: o espresso-core incorpora arquivos POM do Guava.
- A contagem de recursos ociosos foi movida do espresso-contrib.
- rules
- Problema 187249: NPE em
Intents.release()
.
- Problema 187249: NPE em
- runner
- Problema 196066: o argumento
-e log true
noAndroidJUnitRunner
não ignora o teste real. - Espera para o depurador em
onCreate()
do executor. - Todas as anotações de teste compatíveis foram movidas da plataforma para o ATSL.
- Remoção do despejo de rastreamento de pilha não relacionado ao JSBridge.
- Correção de
AndroidAnnotatedBuilder
.
- Problema 196066: o argumento
Outras mudanças importantes
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
eServiceTestRule
estão fora da versão Beta.- Adição de arquivo de configurações de estilo de código para uma formatação uniforme do código.
Espresso 2.2.1, Runner/Rules 0.4 (15-09-2015)
Novos recursos
- rules
- Adição do novo construtor
IntentsTestRule
para ser totalmente compatível comActivityTestRule
- Adição do novo construtor
- runner
- Adição de instalação multidex de caso especial para APIs nível 15 e anteriores.
- Adição de filtros de exclusão à classe e ao pacote:
- Execução de todos os testes, exceto aqueles em uma classe específica:
adb shell am instrument -w -e notClass com.android.foo.FooTest
- Execução de todos os testes, exceto um:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
- Execução de todos os testes, exceto um pacote específico:
adb shell am instrument -w -e notPackage com.android.foo.bar
- Execução de todos os testes, exceto aqueles em uma classe específica:
Contribuições externas
- espresso
- 157911: adição de correspondência de visualização para inserir tipo em um
objeto
EditText
- 157912: adição de correspondência de visualização para corresponder ao texto de erro em
um objeto
EditText
- 150674: adição de compatibilidade com
DrawerActions
para gavetas com gravidade arbitrária - 150744:
DrawerActions
não vazam maisparentListener
- 153303: gravidade especificada nas verificações "is the drawer open or closed"
- 157910: adição de fábricas de ação de abrir e fechar
DrawerLayout
- 157911: adição de correspondência de visualização para inserir tipo em um
objeto
Correções de bugs
- espresso
ViewActions.closeSoftKeyboard()
agora garante que o teclado de software desapareça completamente.- Correção do problema de sincronização com o método
Espresso.pressBack()
do Espresso na API de nível 21 ou mais recente. - Correção da sincronização para animações de fechamento do teclado na API nível 23.
- rules
- Correção de
ServiceTestRule
na API de nível 23,startService()
precisa ser sempre chamado com umaIntent
explícita.
- Correção de
- runner
- Correção de compatibilidade interrompida com o
JaCoCo
do Gradle. - Correção de compatibilidade interrompida com a fragmentação de teste.
- Correção de estado inconsistente no executor do teste após tempos limite de teste no estilo
JUnit3
.
- Correção de compatibilidade interrompida com o
Outras mudanças importantes
- Correções de Javadoc e melhorias de mensagens de erro.
- Ignora métodos
suite()
e não ignora erros init ao usar filtros de métodos.
Espresso 2.2 / ATSL 0.3 (09-06-2015)
Novos recursos
- espresso-web 2.2
- Compatibilidade com o novo
WebView
- Compatibilidade com o novo
- espresso-core 2.2
- Migrado para usar o Dagger v2
- Migrado para usar o Hamcrest v1.3
- espresso-contrib 2.2
- Verificações de acessibilidade
- Compatibilidade com a gravidade
DrawerActions
- rules 0.3
- Regra
DisableOnAndroidDebug
- Regra
- runner 0.3
- Upgrade do JUnit v4.10 para o JUnit v4.12
- Migrado para usar o Hamcrest v1.3
Correções de bugs
- Correção de
DrawerActions
vazandoParentListener
. - Agora, a falha de suposição é tratada como um teste de ignorar em vez de um teste com falha.
- Correção de
MonitoringInstrumentation
vazando instâncias de atividade usandoExecutorService
. - Correção para atividades órfãs sendo travadas no estágio de parada.
- Atualização de
Until.scrollFinished()
para retornar "true" se nenhum evento de rolagem tiver sido gerado. Protege contra possíveis NPE emUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 e UIAutomator 2.1.0 (21-04-2015)
Mudanças importantes
- O artefato do executor de teste foi dividido em dois, e o nome foi mudado de
com.android.support.test:testing-support-lib:0.1
paracom.android.support.test:runner:0.2
ecom.android.support.test:rules:0.2
.
Novos recursos
- espresso-intents: uma API semelhante ao Mockito que possibilita testes de interatividade
hermética, permitindo que os autores do teste verifiquem e criem stubs das intents de saída.
IntentsTestRule
: estendeActivityTestRule
, inicializa e libera Espresso-Intents em testes funcionais da UI
- espresso-core
ViewActions
: adiciona a capacidade para executar declarações globais antes de executar ações Essa opção é útil para outros frameworks desenvolvidos com base no Espresso para validar o estado da hierarquia de visualização, enquanto o conjunto de testes existente do Espresso é executado- Sobrecarga de
resId
ViewMatchers.withContentDescription()
- rules
ActivityTestRule
: essa regra disponibiliza testes funcionais de uma única atividade- Anotações de
UiThreadRule
eUiThreadTest
: essa regra permite que o método de teste anotado comUiThreadTest
seja executado na linha de execução principal do aplicativo ou na linha de execução da IU ServiceTestRule
: esta regra oferece testes funcionais de um serviço.
- runner
ApplicationLifecycleCallback
: callback para o monitoramento de eventos do ciclo de vida do aplicativo.- Todos os argumentos do executor agora também podem ser especificados no arquivo de manifesto
do Android usando uma tag
<meta-data>
.
- UIAutomator
UiDevice.dumpWindowHierarchy()
agora pode aceitar umFile
ou umOutputStream
Correções de bugs
- espresso
- A correspondência de cursor agora retorna
false
se a coluna não for encontrada, para que o Hamcrest possa prosseguir para o próximo cursor. NullPointerException
comPreferenceMatchers
withTitle
não ocorre mais.- O cancelamento do registro do recurso inativo não leva mais o Espresso a achar que temos recursos inativos ocupados.
- Atualização da versão de anotações de suporte usada pelo Espresso Contrib.
- A correspondência de cursor agora retorna
- runner
AndroidJUnit4
agora pula os testes com suposições incorretas.
- UIAutomator
- Execução de observadores para evitar
StaleObjectException
.
- Execução de observadores para evitar
Outras mudanças importantes
- Adição de uma mensagem de erro melhor quando não é possível digitar texto com uma string não latina.
UIAutomator 2.0 (12-03-2015)
O UI Automator agora é baseado na Instrumentação Android, e você pode criar e executar
testes usando o comando ./gradlew connectedCheck
.
Espresso versão 2.0, Test Runner 0.1 (Lançamento em 19-12-2014)
Mudanças importantes
- O Espresso foi movido para um novo namespace, de
android.support.test.espresso
paraandroid.support.test.espresso
. - Os artefatos do Espresso foram renomeados
espresso-1.1.jar
agora éespresso-core-release-2.0.jar
- A interface
IdlingResource
foi movida para uma biblioteca separada,espresso-idling-resource-release-2.0.jar
- Agora,
CountingIdlingResource
reside emespresso-contrib-release-2.0.jar
, como sempre deveria ter sido
- Uma dependência opcional Guava foi removida da API pública para
oferecer compatibilidade com o reempacotamento da dependência Guava e evitar a colisão do DEX, uma das principais
fontes de problemas no desenvolvimento. Os métodos afetados incluem:
ViewAssertion.check()
HumanReadables.getViewHierarchyErrorMessage()
Novos recursos
- Ações
ViewActions
replaceText()
openLink()
- Deslizar para cima e para baixo
- espresso-contrib
RecyclerViewActions
: gerencia interações comRecyclerViews
PickerActions
: gerencia interações com os seletoresDate
eTime
- Matchers
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
: correspondências para testes de layout relacionados ao i18n.CursorMatchers
: uma coleção de correspondências para objetosCursor
.
- Declarações
PositionAssertions
, incluindoisLeftOf()
eisAbove()
: coleção deViewAssertions
para verificar a posição relativa dos elementos na tela.LayoutAssertions
: declarações para testes de layout relacionados ao i18n.
- App de teste: diversos novos exemplos de atividades/testes.
- Outro
Espresso.unregisterIdlingResources()
eEspresso.getIdlingResources()
: oferece mais flexibilidade para funcionamento comIdlingResources
.ViewInteraction.withFailureHandler()
: permite substituir o gerenciador de falhas deonView()
.- Compatibilidade com
onData()
paraAdapterViews
baseadas emCursorAdapters
.
Correções de bugs
ViewMatchers.isDisplayed()
corresponde a visualizações que ocupam a tela inteira, mas não são mais exibidas em menos de 90%.- A execução da chamada da ação de deslizar para
DrawerActions.openDrawer()
não resulta mais emIdlingResourceTimeoutException
.
Outras mudanças importantes
- Mudança da compilação com o Maven para o Gradle.
- As dependências do Espresso (Guava, Dagger, Hamcrest) foram movidas para evitar colisões do DEX.
- Mudança para retornar sucesso ou falha ao registrar e cancelar o registro de recursos inativos.
- Compatibilidade com Lollipop: coloque
message.recycle()
atrás de uma interface para explicar as mudanças relacionadas à versão. - Mudança do nível do SDK de destino para 21: afeta principalmente o app de teste.
Versão 1.1 (Lançamento em: 08-01-2014)
Espresso
- Novo
swipeLeft
eswipeRight
ViewActions
- Compatibilidade com várias janelas: um recurso avançado que permite escolher a janela de destino em que o Espresso executará a operação.
- Melhorias em
TypeTextAction
: permite digitar texto em uma visualização pré-focada, facilitando a adição de texto. - Várias correções de bugs.
Biblioteca Espresso Contrib
- Essa nova biblioteca contém recursos que complementam o Espresso, mas que não fazem parte da biblioteca principal.
- Novas
DrawerActions
para operar noDrawerLayout
: têm uma dependência na Biblioteca de Suporte do Android. Por isso, elas são mantidas fora da biblioteca principal do Espresso.
Amostras de teste
- Esses testes foram realocados para o mesmo pacote do app de teste.
- Os POMs do Maven foram corrigidos para remover dependências Guava duplicadas. Por isso,
mvn install
já funciona.