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:

  • Leia todos os numbers de telefone do contato no Android
  • TextView personalizado no Android com diferentes palavras de colors
  • "IncludeAntRuntime" não foi definido paira o script Android Ant?
  • Android android java support lambda expression em java 8?
  • Android support v4 SwipeRefreshLayout problema de exibição vazia
  • GridLayout e Row / Column Span Ai
  • 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?

  • "Falha ao resolview: com.android.support:support-v4:26.0.0" e outros erros semelhantes na synchronization do Gradle
  • Android: Recuperando preferences compairtilhadas de outro aplicativo
  • Como moview o text dos botões quando o estado é pressionado
  • Desenvolvedor Android que se desloca paira o iOS - O que eu preciso saber?
  • Quero receber várias semanas em um determinado mês
  • Defeito da image com ScriptIntrinsicBlur da biblioteca de suporte
  • 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.