2013-12-16 94 views
1

我們正在嘗試將使用ant build的Eclipse項目遷移到使用gradle的Android Studio中。到目前爲止,除了使用外部json文件的我們的JUnit測試以外,所有這一切都很好。我們有很多這樣的外部文件位於與java文件相同的目錄中。有沒有辦法讓java代碼和json文件保持在同一位置,只需修改gradle中的構建腳本?將Android Android Junit測試遷移到Android Studio Gradle

當前構建目錄是這樣的\com\pack\krf\包含MyFileTest.javadata.json。加載json的源代碼是這樣的:

getClass().getResourceAsStream("data.json"); 

我不想更改具有相同結構的300多個java文件。另外,我不想將它們分組到Gradle中的資源目錄中,因爲這些文件中的某些文件具有相同的名稱。

回答

1

下面是我的一個隊友提出的解決方案。在android聲明之後添加到你的build.gradle文件中。打印路徑用於調試。

task alterResourcePath << { 
    sourceSets.testDebug.resources.srcDir('src/test/java') 
    sourceSets.testDebug.resources.srcDirs.each { 
    File f-> 
     if(f.exists()){ 
      println f.path 
     } 
    } 
} 

test.dependsOn alterResourcePath 
1

默認情況下gradle產出(如Maven的)把資源src/main/resources下,所以你必須要告訴搖籃去找他們,而不是src/<something>/java

android { 
    sourceSets { 
     instrumentTest { 
      resources { 
       srcDirs = ['src/instrumentTest/java'] 
      } 
     } 
    } 
} 

,如果你正在運行robolectric測試你做同樣的,但那裏的robolectric插件使用標準的Java源代碼集。如果使用其他sourceSets(每味或每構建類型),你需要更新這些以及

sourceSets { 
    test { 
     resources { 
      srcDirs = ['src/test/java'] 
     } 
    } 
} 

:所以你不會做這個Android的擴展中。

+0

不行的,我忘了說,我們正在使用RoboElectric也想用Robotium的UI如果你正在使用roboeletric你只是做相同的,但對於roboelectric sourcesets測試 – JPM

+0

。我會編輯我的答案。 –