這是我的設置。我有一個Android項目與幾個Java(而不是Android)模塊。使用Spock和Java 8運行Android應用程序的問題
最近我開始使用Spock(這是一個基於JUnit和Groovy的測試框架)。
在Java模塊我簡單地使用Groovy插件是這樣的:
apply plugin: 'groovy'
然後包括這些依賴關係:
dependencies {
testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
testCompile 'org.codehaus.groovy:groovy-all:2.4.6'
testCompile 'cglib:cglib-nodep:3.1'
testCompile 'org.objenesis:objenesis:2.2'
}
在我的主要Android應用我有這樣的設置。在根項目我有這樣的類路徑依賴:
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.9'
和應用模塊上我套用:
apply plugin: 'groovyx.grooid.groovy-android'
並配置爲這樣:
androidGroovy {
options {
configure(groovyOptions) {
// used so groovy can do it's magic, I think, not 100% sure
javaAnnotationProcessing = true
}
}
skipJavaC = true // if disabled my CPU melts for some reason
}
我也啓用在Android上使用Jack標誌的Java 8:
jackOptions {
enabled true
}
所有測試都使用Spock運行(即使是應用程序模塊上的測試)。但是,當我嘗試在設備或模擬器上運行應用程序時,我從Android Studio中收到多個錯誤。該錯誤發生在任務:compileDebugGroovyWithJack
,它會抱怨不能找到任何來自外部的依賴關係(包括支持庫)的類:
有沒有人碰到這個問題之前來的呢?這是一個相當封鎖:(
我正在應用Groovy插件的項目是純Java項目,而不是Android。事實上,如果我禁用了主應用程序模塊中的android groovy插件,該應用程序運行時沒有問題(但未找到測試) – pablisco
您可能不想跳過javac。當你這樣做時,你告訴groovy編譯器編譯所有可能完全跳過jack和jill編譯器的所有東西。 同樣這不被支持,並且很可能需要定製您的gradle腳本來完成此操作。 – Pieces
如果沒有skipJavaC,編譯將永不停止並佔用CPU – pablisco