Problema de teste de unidade do projeto Kotlin Multiplatform


8

Hoje acabei de atualizar meu Android Studio para

Android Studio 3.5.2
Build #AI-191.8026.42.35.5977832, built on October 31, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.1

Atualizei o Android Studio porque ele me indica um erro quando a versão do kotlin está abaixo de 1.3.60.

No entanto, estou enfrentando problemas com o arquivo de teste da unidade. Anteriormente, eu posso executar o teste de unidade sem nenhum problema. Agora, quando clico no botão Executar, além do nome da função (à esquerda), ele mostra Nada aqui.

insira a descrição da imagem aqui

Abaixo estão todas as minhas dependências

// build.gradle

buildscript {
ext.kotlin_version = '1.3.60'
repositories {
    google()
    jcenter()
    maven { url "https://kotlin.bintray.com/kotlinx" }
}

dependencies {
    // classpath 'com.android.tools.build:gradle:3.4.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}
}

allprojects {
  repositories {
    google()
    jcenter()
  }
}

task clean(type: Delete) {
   delete rootProject.buildDir
}


 apply plugin: 'kotlin-multiplatform'
 apply plugin: 'kotlinx-serialization'

kotlin {
targets {
    final def iOSTarget = presets.iosX64 // Simulator

    fromPreset(iOSTarget, 'iOS') {
        binaries {
            framework('SharedCode')
        }
    }
    fromPreset(presets.jvm, 'android')
}

sourceSets {
    commonMain {
        dependencies {
            api 'org.jetbrains.kotlin:kotlin-stdlib-common'
            implementation "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
            implementation "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
            implementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
            implementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
        }
    }

    iOSMain {
        dependsOn commonMain
    }

    androidMain.dependencies {
        api 'org.jetbrains.kotlin:kotlin-stdlib'
    }

    commonTest {
        dependsOn commonMain
    }
}
}

Há algo que eu perdi nesta nova versão do Android Studio e kotlin. Eu tenho lutado com isso por horas. Navegou na Web, mas parece que não conseguiu encontrar ajuda.

obrigado


Obrigatório, você tentou invalidar caches e reiniciar?
— Evgeny Bovykin 26/11/19

@EvgenyBovykin senhor sim, tentou que já, e nada diferente
— alvinWB

Eu enfrento o mesmo problema ......
— James Fu


1
Também registrei um problema no jetbrains: youtrack.jetbrains.com/issue/KT-25065
— hardysim

Respostas:


0

A instalação limpa do Android Studio corrigiu esse problema. Nunca pensei que esse problema ocorresse. Atualizado o Android Studio várias vezes no passado, e este é o meu primeiro encontro desse tipo.


Tentei instalar mesmo limpo em um computador novo, mas o problema permanece (também na versão 3.5.3).
— Pecan

Também enfrento o mesmo problema, e ele exibe "nada aqui" no meu teste comum, mas funciona bem no meu teste do Android. Eu preciso executar o teste escrevendo a configuração por mim mesmo para executar o código no teste comum. Caso contrário, você pode tentar executar todos os testes por linha de comando.
— James Fu

Isso acontece para mim desde 3.5.x até 3.6 estável hoje. Tentei limpar, reinstalar, caixa de ferramentas jetbrains e downloads independentes etc. Nada ajuda.
— hardysim 25/02

O uso do IntelliJ normal (o mais recente) mostra as opções para executar / depurar em cada teste, mas clicar nele mostra apenas "Nenhuma tarefa disponível".
— hardysim 25/02

Ele funciona em um novo projeto (a partir do assistente "novo projeto" usando "Mobile Shared Library | Gradle") no IntelliJ 2019.3.3. Mas abrir o mesmo projeto no Android Studio 3.6 não ("Nada aqui").
— hardysim 25/02

0

No meu caso, esses problemas ocorreram quando eu atualizei de

  • Android Studio 3.5.3 e versão do plugin Kotlin v1.3.50-release-Studio3.5-1

para

  • Android Studio 3.6.3 com o plugin Kotlin 1.3.71-release-Studio3.6-1

Todos os meus testes comuns do Kotlin MPP não estavam sendo executados a partir da função lateral esperada do IDE, "verde", e também exibiram a mensagem Nada aqui .

Tentei algumas coisas, uma delas sendo uma desinstalação completa e depois a instalação, mas nada parecia funcionar.

O que acabou funcionando para mim foi (com algumas ressalvas):

  • criou um novo teste (funciona com testes existentes também, mas apenas como exemplo)

foto 1

para garantir que nada aqui seja exibido.

Então:

  • abra o menu suspenso ao lado do emulador selecionado e clique em Editar configurações
  • em JUnit Android, clique no botão + para adicionar uma nova configuração
  • deve ficar assim:

pic2

verifique se o tipo de teste é Class e se você possui o caminho correto para o arquivo. Por exemplo:

com.my.path.is.correct.MyNewTestCase

Além disso, verifique se você possui o módulo correto para o Kotlin comum; no meu caso, era comum (não commonTest).

Após o procedimento acima, você poderá executar a classe de teste no botão principal Executar (novamente, ao lado da lista suspensa Emulador) e até executá-la como Depuração .

O botão de execução "verde" ao lado da função continuará dizendo Nada aqui, exceto adicionar um ponto de interrupção e executar a nova configuração a partir do botão principal de depuração , funciona para mim:

insira a descrição da imagem aqui

Obviamente, isso não é perfeito, mas foi a única maneira de fazê-lo funcionar no IDE que eu pude encontrar.

Espero que ajude!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.