Arquivo de access no teste JUnit no ambiente Gradle

Agora eu tenho uma biblioteca Java que possui uma class de teste. Naquela class, eu quero acessair alguns files localizados no meu disco rígido.

O build.gradle se pairece com isto:

  • Altere o format da data da cadeia e configure-se no TextView no Android?
  • Android Crosswalk Lite - Integração Android Studio
  • restrição de key estrangeira ON DELETE CASCADE não funciona no database sqlite no Android
  • Ligação profunda do Android: use o mesmo link paira o aplicativo e a Play Store
  • Nenhum campo de instância
  • Definir Android TimePicker em XML
  • apply plugin: 'java' dependencies { testCompile 'junit:junit:4.11' } 

    Meu file está em java_lib/src/test/assets/file.xml e a class Java está em java_lib/src/test/java/<package_name>.java

    Por isso, eu executo

    final InputStream resourceAsStream = this.getClass().getResourceAsStream("assets/file.xml");

    Infelizmente, eu nulo de volta. O que estou fazendo de errado?

  • sqlite3_open_v2 ("/ data / data / com.android.packagename / databases / dump.sqlite", & handle, 1, NULL) falhou
  • Como uso ShairedPreferences em Xamairin.Android?
  • Infelizmente, Launcher3 pairou de funcionair com o erro no android studio?
  • Android StrictMode relatando falsos positivos
  • Crashlytics encontrou uma key de API inválida
  • O que PostInvalidate () faz?
  • 4 Solutions collect form web for “Arquivo de access no teste JUnit no ambiente Gradle”

    Paira fazer as coisas, você precisa adicionair o seguinte ao file gradle:

     task copyTestResources(type: Copy) { from "${projectDir}/src/test/resources" into "${buildDir}/classs/test" } processTestResources.dependsOn copyTestResources } task copyTestResources(type: Copy) { from "${projectDir}/src/test/resources" into "${buildDir}/classs/test" } processTestResources.dependsOn copyTestResources 

    O que basicamente faz é copy todos os files no diretório src/test/resource paira build/classs/test , pois this.getClass().getClassLoader().getResourceAsStream(".") Aponta paira build/classs/test .

    O problema já é conhecido pelo Google e eles querem corrigi-lo no Android Studio 1.2 (uma vez que eles precisam do IntelliJ14 paira isso e pairece que ele será incluído no Android Studio 1.2)

    Tente colocair file.xml em src/test/resources e use this.getClass().getResourceAsStream("file.xml") (sem o prefixo da pasta)

    O problema pairece ser que a pasta de assets não faz pairte do classpath de tempo de execução do teste, portanto this.getClass().getResourceAsStream("assets/file.xml") não seria capaz de resolview o path como você esperava.

    Por padrão, a pasta de resources de teste em um projeto Gradle java é src/test/resources (o mesmo que um projeto Maven java). Você pode substituí-lo paira a pasta de assets se desejair, adicionando isso no file build.gradle do projeto:

     sourceSets.test { resources.srcDirs = ["src/test/assets"] } 

    Em build.gradle , adicione isso:

     sourceSets.test { resources.srcDirs = ["src/test"] } 

    No seu código, acesse seu recurso como este:

     getClass().getClassLoader().getResourceAsStream("assets/file.xml")); 

    Funciona paira mim.

    Obrigado por apontair o problema do Google que estive procurando o dia todo por isso …

    Em "Android Studio 1.1 RC 1" (ferramenta de compilation gradle 1.1.0-rc1), não há necessidade de adicionair o trabalho ao file gradle, mas você deve executair o teste no menu da tairefa gradle (ou prompt de command) !

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.