2015-08-31 34 views
7

我有使用Robolectric的單元測試目的的項目。本項目採用Robolectric 3.0和需要添加虛擬機選項-ea-noverify選項。JVM選項時運行gradlew測試

在Android Studio中,我在Run > Edit Configurations...中創建了新的JUnit配置,然後將VM Options設置爲-ea -noverify。通過這種方式,我成功地運行了我的單元測試。這是圖像關於我的配置,查看Here

使用命令行然而,對於持續部署,我需要運行單元測試。所以我使用./gradlew test來運行單元測試。我還將org.gradle.jvmargs=-ea -noverify添加到gradle.properties文件。不幸的是,它不起作用。我可以運行單元測試,但我得到了java.lang.VerifyError,我認爲gradle.properties沒有被加載。

所以,我的問題是,如何讓gradle.properties負載或你知道什麼辦法來解決我的虛擬機的選擇問題?

回答

7

我發現,我們可以將此塊添加到應用程序的的build.gradle解決這個問題

tasks.whenTaskAdded { theTask -> 
    def taskName = theTask.name.toString() 
    if ("testDevDebug".toString().equals(taskName)) { 
     theTask.jvmArgs('-ea', '-noverify') 
    } 
} 

DevDebug是我的構建變量。

+0

這適用於最新的Android Studio 2.3.3 –

0

也許這

./gradlew -Dorg.gradle.jvmargs="-ea -noverify" test 
+0

我以前試過,但仍然得到java.lang.verifyError。 –

16

它已經回答了,但是這可能是一個簡單的解決方案:

在你的應用程序模塊的build.gradle文件在android系統關閉,加入這一點。

android { 
    .... 

    testOptions { 
    unitTests.all { 
     jvmArgs '-noverify' 
    } 
    } 
} 
+1

這個更清潔。 「gradle way」 –

+3

有沒有人有過使用Android Studio 2.3的經驗?即使在這種情況下,我仍然看到測試失敗。 –

+0

這在2.3.3上不起作用。接受的答案很好 –