2013-04-03 5 views
5

Sto tentando di aggiungere powermock-mockito e mockito in un progetto di test Android. Ho creato il progetto di test Android utilizzando lo strumento da riga di comando di Android per creare build.xml e la struttura del progetto. Ho i seguenti vasi nel mio libs/directory:apkbuilder trova il file duplicato quando si aggiunge powermock a un progetto di prova Android

  • dexmaker-1.0.jar
  • dexmaker-Mockito-1.0.jar
  • Mockito-all-1.9.5.jar
  • powermock-Mockito -1.5-full.jar

Quando si tenta di costruire il progetto con il debug formica, ottengo il seguente errore:

[apkbuilder] Creating ProjectTests-debug-unaligned.apk and signing it with a debug key... 
[apkbuilder] Found duplicate file for APK: mockito-extensions/org.mockito.plugins.MockMaker 
[apkbuilder] Origin 1: /home/cmiller/Projects/android-project/ProjectTests/libs/powermock-mockito-1.5-full.jar 
[apkbuilder] Origin 2: /home/cmiller/Projects/android-project/ProjectTests/libs/powermock-mockito-1.5-full.jar 

BUILD FAILED 
/home/cmiller/Applications/adt-bundle-linux/sdk/tools/ant/build.xml:951: The following error occurred while executing this line: 
/home/cmiller/Applications/adt-bundle-linux/sdk/tools/ant/build.xml:962: The following error occurred while executing this line: 
/home/cmiller/Applications/adt-bundle-linux/sdk/tools/ant/build.xml:319: com.android.sdklib.build.DuplicateFileException: Duplicate files at the same path inside the APK 

Non sono sicuro di come sia possibile trovare un file duplicato in un unico contenitore. Il file build.xml non è stato affatto modificato e non ho creato un custom_rules.xml. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

1

Hai controllato se il file è realmente duplicato nel file jar? Afaik è possibile avere lo stesso file due volte in un file zip. In quel file la rimozione di quella dal barattolo potrebbe aiutare. Non ho idea di come sarebbe arrivato lì comunque.

+0

Non esiste più di una volta. Penso che alla fine il problema risieda nel framework di test predefinito di androids che non funziona con nulla che faccia manipolazione a livello di byte come i framework di simulazione. Potrei dover provare qualcos'altro per essere in grado di fare qualsiasi TDD ragionevole in Android. – Jearil

+0

Avevo esattamente lo stesso problema e, in effetti, il file powermock-mockito-1.5-full.jar aveva un file duplicato chiamato "org.mockito.plugins.MockMaker" nella cartella "mockito-extensions". Voglio dire, ho sprecato ore a fare il debug di questo. La biblioteca è stata rilasciata lo scorso dicembre e c'è ancora un numero ridicolo come questo presente. Jeez .. – gelupa

2

Basta rimuovere la classe duplicata org.mockito.plugins.MockMaker da uno dei vasi. Ho risolto questo nel modo seguente:

  1. effettuare una copia di backup del powermock-mockito-1.5-full.jar
  2. Rinominare powermock-mockito-1.5-full.jar-powermock-mockito-1.5-full.zip
  3. Unzip powermock-mockito-1.5-full.zip
  4. rm -rf mockito-extensions
  5. jar cf powermock-mockito-1.5-full.jar META-INF/ org/
  6. Mettere il vaso aggiornato nella cartella libs .