2014-12-06 15 views
8

的androidTest目錄我補充兩個模塊在我AndroidStudio項目:如何使用代碼在另一個模塊

app-base 
| 
|----src 
     |____androidTest 
       |________MyTestBase.java   

app 
| 
|----src 
     |____androidTest 
       |________MyTest.java 

一些常見的測試類在應用程序基的androidTest的界定,app'androidTest使用。

我試圖在應用程序的的build.gradle中添加以下代碼:

evaluationDependsOn(':app-base') 

    compile project(':app-base') 

    androidTestCompile project(':app-base') 

我有包括settings.gradle兩個應用程序,基礎和應用的gradlew項目輸出爲:

Root project 'MyProject' 
+--- Project ':app-base' 
+--- Project ':app' 

這樣沒有編譯錯誤,但是當我在ide中運行MyTest時,它說MyTestBase類沒有找到。

你知道怎麼回事嗎?任何想法都表示讚賞。謝謝。

+0

你定義一個適當的* settings.gradle *文件? 「gradlew projects」的輸出是什麼?查看[Gradle文檔](http://www.gradle.org/docs/current/userguide/multi_project_builds.html)以獲取有關如何設置多項目構建的更多信息。 – 2014-12-06 19:28:29

+0

對另一個項目的測試代碼有依賴性肯定是非典型的。您必須明確依賴項目testCompile配置。嘗試'androidTestCompile項目(路徑:':app-base',配置:'androidTestCompile')'。 – 2014-12-07 05:44:29

回答

3

我建議你採取以下策略:創建一個新模塊test-utils並將MyTestBase.java放在本模塊的主要源代碼中。

test-utils 
| 
|----src 
     |____main 
      |________MyTestBase.java 

然後添加這個test-utils在所有模塊的測試依賴它需要

androidTestCompile project(':test-utils') 
+0

是的,我曾經想過解決方案。我認爲這是有效的。但是,我需要爲幾個類添加一個新模塊。這是不可接受的。但是,非常感謝:) – maoruilin 2014-12-07 01:50:28

+0

恕我直言,一個新的模塊不是一件大事。可選的解決方案是:在每個模塊中重複代碼或爲androidTest定義多個源代碼目錄,使用一些相對路徑:'../ app-base/src/androidTest/java /'(恕我直言,兩者都更糟糕) – ben75 2014-12-07 10:20:16

+0

我試過這種方法但無法讓它工作。在'instrumentantiontest'模塊gradle文件中,我使用'compile'語句,因爲源代碼位於'main'中。一切都編譯完成,但是當運行所有的儀器測試時,它找不到任何測試。當特別破壞一個測試方法時,使用ClassNotFound異常的測試錯誤 – 2016-06-09 09:23:39

相關問題