【问题标题】:Gradle import Powermock and MockitoGradle 导入 Powermock 和 Mockito
【发布时间】:2014-10-21 13:19:00
【问题描述】:

感觉就像我已经尝试了一切。每次我让导入工作而没有任何编译器错误时,都会缺少一些类。我进口了,所以除了PowerMockRunner.class,我什么都有了 我不知道没有它我将如何使用 powerMock

这是我现在的 gradle 文件

apply plugin: 'android'                                                                               

dependencies {                                                                                        
    compile fileTree(dir: 'libs', include: '*.jar')                                                   
    compile project(':google-play-services_lib')                                                      
    compile project(':facebook-sdk_lib')                                                              
    compile 'de.greenrobot:greendao:1.3.7'                                                            

    compile ('com.google.dexmaker:dexmaker:1.1')                                                      
    compile ('com.google.dexmaker:dexmaker-mockito:1.1'){                                             
        exclude group: 'org.hamcrest'                                                                 
        exclude group: 'org.javassist'                                                                
    }                                                                                                 

    compile('junit:junit:4.4'){                                                                       
       exclude group: 'org.hamcrest'                                                                  
    }                                                                                                 

    compile('org.mockito:mockito-core:1.9.5'){                                                        
        exclude group: 'org.hamcrest'                                                                 
    }                                                                                                 

    compile('org.powermock:powermock-api-mockito:1.4.12'){                                            
       exclude group: 'org.hamcrest'                                                                  
    }                                                                                                                                                                                                                                                                                                

}                                                                                                     

android {                                                                                             

    packagingOptions {                                                                                
        exclude 'META-INF/ASL2.0'                                                                     
        exclude 'META-INF/LICENSE'                                                                    
        exclude 'META-INF/LICENSE.txt'                                                                
        exclude 'META-INF/NOTICE'                                                                     
        exclude 'META-INF/NOTICE.txt'                                                                 


    }                                                                                                 

    compileSdkVersion 19                                                                              
    buildToolsVersion "19.1.0"                                                                        

    lintOptions {                                                                                     
        abortOnError false                                                                            
    }                                                                                                 

    sourceSets {                                                                                      
        main {                                                                                        
            manifest.srcFile 'AndroidManifest.xml'                                                    
            java {                                                                                    
                srcDir 'src'                                                                          
                srcDir 'src-gen'                                                                      
                srcDir 'tests'                                                                        
            }                                                                                         
            resources {                                                                               
                srcDir 'src'                                                                          
                srcDir 'src-gen'                                                                      
            }                                                                                         
            aidl.srcDirs = ['src','src-gen']                                                          
            renderscript.srcDirs = ['src','src-gen']                                                  
            res.srcDirs = ['res']                                                                     
            assets.srcDirs = ['assets']                                                               
        }                                                                                             
        androidTest.setRoot('tests')                                                                  

        debug.setRoot('build-types/debug')                                                            
        release.setRoot('build-types/release')                                                        
    }                                                                                                 
}  

这是我一整天都被扔在脸上的编译器错误。

意外的顶级异常: com.android.dex.DexException:多个dex文件定义了Lorg/hamcrest/Description; 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 在 com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 在 com.android.dx.command.dexer.Main.run(Main.java:230) 在 com.android.dx.command.dexer.Main.main(Main.java:199) 在 com.android.dx.command.Main.main(Main.java:103)

【问题讨论】:

    标签: java android gradle mockito powermock


    【解决方案1】:

    我昨天坐了一整天,想知道应该如何解决这个问题。现在已经解决了,这就是我使用 gradle.build 文件解决问题的方法

    apply plugin: 'android'                                                                              
    
    repositories {                                                                                       
        mavenCentral()                                                                                   
    }                                                                                                    
    
    dependencies {                                                                                       
        compile fileTree(dir: 'libs', include: '*.jar')                                                  
        compile project(':google-play-services_lib')                                                     
        compile project(':facebook-sdk_lib')                                                             
    
    
        compile ('de.greenrobot:greendao:1.3.7'){                                                        
           exclude group: 'org.hamcrest'                                                                 
        }                                                                                                
    
        androidTestCompile('org.mockito:mockito-core:1.9.5'){                                            
            exclude group: 'org.hamcrest'                                                                
        }                                                                                                
    
        androidTestCompile('org.powermock:powermock-module-junit4:1.5'){                                 
            exclude group: 'org.hamcrest'                                                                
        }                                                                                                
    }                                                                                                    
    
    android {                                                                                            
    
        packagingOptions {                                                                               
            exclude 'META-INF/ASL2.0'                                                                    
            exclude 'META-INF/LICENSE'                                                                   
            exclude 'META-INF/LICENSE.txt'                                                               
            exclude 'META-INF/NOTICE'                                                                    
            exclude 'META-INF/NOTICE.txt'                                                                
        }                                                                                                
    
        compileSdkVersion 19                                                                             
        buildToolsVersion "19.1.0"                                                                       
    
        lintOptions {                                                                                    
            abortOnError false                                                                           
        }                                                                                                
    
        sourceSets {                                                                                     
            main                                                                                         
            {                                                                                            
                manifest.srcFile 'AndroidManifest.xml'                                                   
                resources                                                                                
                {                                                                                        
                    srcDir 'src-gen'                                                                     
                }                                                                                        
                aidl.srcDirs = ['src/main/java', 'src-gen']                                              
                renderscript.srcDirs = ['src/main/java', 'src-gen']                                      
                res.srcDirs = ['res']                                                                    
                assets.srcDirs = ['assets']                                                              
                java.srcDirs = ['src/main/java', 'src/main/java/', 'src-gen']                            
            }                                                                                            
    
            androidTest {                                                                                
                java.srcDirs = ['tests']                                                                 
            }                                                                                            
    
    
            unitTest {                                                                                   
                java.srcDir file('tests')                                                                
                resources.srcDir file('tests/res')                                                       
            }                                                                                            
    
    
            debug.setRoot('build-types/debug')                                                           
            release.setRoot('build-types/release')                                                       
        }//-End of sourceSet                                                                             
    }  //-End of android    
    

    希望这可以帮助至少一个人不陷入我经历过的同一个 gradle 失败循环中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 2011-08-27
      • 1970-01-01
      相关资源
      最近更新 更多