Para meus testes de instrumentação, eu estava usando
@RunWith(AndroidJUnit4.class)
de
import androidx.test.runner.AndroidJUnit4;
para estabelecer meus casos de teste. Agora essa linha é marcada como obsoleta com a dica para usar AndroidJUnit4
em
import androidx.test.ext.junit.runners.AndroidJUnit4
No entanto, se eu tentar importar AndroidJUnit4
do pacote nomeado, recebo o erro, isso ext
não pode ser resolvido.
Você tem uma idéia, qual pacote deve ser incluído no gradle para resolver esse problema?
android
junit
android-testing
androidx
Marcel Gangwisch
fonte
fonte
Respostas:
De acordo com a documentação para AndroidJUnit4 ,
O arquivo gradle deve conter a seguinte linha:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Mude a classe de teste para
AndroidJUnit4ClassRunner
deAndroidJUnit4
Se ainda assim não funcionar, limpe e / ou reconstrua seu projeto. Além disso, você pode verificar a versão atual diretamente no repositório maven do Google
fonte
Se você tentou a solução do @ MarcelGangwisch e sua compilação falhou, dizendo que não consegue encontrar o recurso E você também limpou / reconstruiu seu projeto e ele ainda não funciona, tente o seguinte: (baseado também na solução do @ KrzysztofDziuba)
No seu arquivo gradle em que você alterou a dependência, certifique-se de adicioná-lo como o tipo necessário, ou seja:
Para testes de interface do usuário:
Para testes de unidade:
No meu exemplo, eu adicionei como ambos e agora funciona.
fonte
Solução
Adicione esta linha ao build.gradle:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Mude
AndroidJUnit4
paraAndroidJUnit4ClassRunner
na classe de testeAviso
Eu recebi o mesmo erro, mas a seguinte solução falhou para mim:
Arquivo -> Invalidar caches ... e selecione Invalidar e reiniciar
fonte
Para mim, as seguintes etapas funcionaram:
1. Substitua as bibliotecas androidx pela postada aqui . minha final
app/build.gradle
ficou assim:Em seguida, substituí manualmente os módulos importados da minha
ExampleInstrumentTest.java
classe pelas classes mais recentes:O que estava me incomodando era o fato de a
InstrumentationRegistery
classe ainda estar obsoleta. Então eu useiInstrumentationRegistry.getInstrumentation().getTargetContext();
daandroidx.test.platform.app.InstrumentationRegistry
classe.fonte
@RunWith(AndroidJUnit4ClassRunner.class)
foi a parte que resolveu o problema no meu caso. Realmente não entendo por que o android studio gera código obsoleto às vezes.ApllicationProvider.getApplicationContext<Context>()
vez deInstrumentationRegistry.getInstrumentation().getTargetContext();
Eu tentei tudo o que foi mencionado acima até acessar o site oficial do Android, e eles sugeriram a importação de e
androidx.test.ext.junit.runners.AndroidJUnit4
nãoandroidx.test.runner.AndroidJUnit4
. ligaçãofonte
No meu caso, mudar
androidTestImplementation
paratestImplementation
ajudou. Eu não sabia a diferença antes de ler esta diferença do android entre testImplementation e androidTestImplementation em build.gradlefonte
Se você importou essas bibliotecas de teste do AnroidX, sincronizou e reconstruiu o projeto, mas os pacotes importados ainda não foram resolvidos. Lembre-se de como você atualizou seu projeto para o AndroidX, feche o Android Studio e remova a
.idea
pasta e reabra seu projeto novamente ...Isso funcionou para mim!
fonte
Inclua essas linhas no módulo de aplicativo build.gradle.
testImplementation 'androidx.test.ext: junit: 1.1.1' androidTestImplementation 'androidx.test.ext: junit: 1.1.1'
Na classe de teste, substitua seu executor de testes por
importar androidx.test.ext.junit.runners.AndroidJUnit4;
Se
InstrumentationRegistry.getTargetContext()
é o uso obsoletoInstrumentationRegistry
a partirandroidx.test.platform.app
destaInstrumentationRegistry.getInstrumentation (). GetTargetContext ()
fonte