2013-04-03 3 views
5

Ich versuche powermock-mockito und mockito in ein Android-Test-Projekt hinzuzufügen. Ich habe das android-Testprojekt mit dem android-Befehlszeilentool erstellt, um die build.xml- und Projektstruktur zu erstellen. Ich habe folgende Gläser in meinem libs/Verzeichnis:apkbuilder findet doppelte Datei beim Hinzufügen von powermock zu einem Android-Test-Projekt

  • dexmaker-1.0.jar
  • dexmaker-Mockito-1.0.jar
  • Mockito-all-1.9.5.jar
  • PowerMock-Mockito -1,5-full.jar

Wenn ich versuche, das Projekt mit ant debug zu bauen, bekomme ich folgende Fehlermeldung:

[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 

Ich bin mir nicht sicher, wie es ist, eine doppelte Datei in einem einzigen Glas zu finden. Die Datei build.xml wurde überhaupt nicht geändert und ich habe keine custom_rules.xml erstellt. Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Haben Sie überprüft, ob die Datei tatsächlich in der JAR-Datei dupliziert ist? Afaik ist es möglich, dieselbe Datei zweimal in einer Zip-Datei zu haben. In dieser Datei könnte das Entfernen aus dem Glas helfen. Keine Ahnung, wie es dort hinkommen würde.

+0

Es existierte nicht mehr als einmal. Ich denke, letztendlich liegt das Problem darin, dass Androids Standard-Testframework nicht mit irgendetwas funktioniert, das Manipulation auf Byte-Ebene wie Spott-Frameworks durchführt. Ich muss vielleicht etwas anderes versuchen, um eine vernünftige TDD in Android zu tun. – Jearil

+0

Ich hatte genau das gleiche Problem und in der Tat hatte PowerMock-Mockito-1.5-full.jar eine doppelte Datei namens "org.mockito.plugins.MockMaker" unter "Mockito-Erweiterungen" Ordner. Ich meine, ich verschwende Stunden damit, das zu debuggen. Die Bibliothek wurde letzten Dezember veröffentlicht und es gibt immer noch ein lächerliches Problem wie dieses Geschenk. Meine Güte .. – gelupa

2

Entfernen Sie einfach die doppelte Klasse org.mockito.plugins.MockMaker aus einem der Gläser. Ich löste dies durch folgende Maßnahmen:

  1. Make Sicherungskopie powermock-mockito-1.5-full.jar
  2. Umbenennen powermock-mockito-1.5-full.jar-powermock-mockito-1.5-full.zip
  3. Dekomprimieren powermock-mockito-1.5-full.zip
  4. rm -rf mockito-extensions
  5. jar cf powermock-mockito-1.5-full.jar META-INF/ org/
  6. Setzen Sie die aktualisierte jar im libs Ordner .