2014-10-28 16 views
5

Tôi muốn chạy thử nghiệm có từ 'tích hợp' trong đường dẫn để loại trừ với chạy thử mặc định, nhưng tôi muốn chạy tất cả chúng cùng nhau trong một nhiệm vụ riêng biệt. Hiện nay tôi có một cấu hình thử nghiệm cơ bản:Nhiệm vụ kiểm tra tích hợp riêng biệt trên gradle với android

sourceSets { 
    androidTest.setRoot('src/test') 

    integrationTest.setRoot('src/test') 
} 

... 

androidTestCompile 'junit:junit:4.11' 
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1' 
androidTestCompile files('libs/android-junit-report-1.5.8.jar') 
androidTestCompile 'com.squareup:fest-android:1.0.8' 
androidTestCompile 'org.robolectric:robolectric:2.3' 

integrationTestCompile 'junit:junit:4.11' 
integrationTestCompile 'com.jayway.android.robotium:robotium-solo:5.1' 
integrationTestCompile files('libs/android-junit-report-1.5.8.jar') 
integrationTestCompile 'com.squareup:fest-android:1.0.8' 
integrationTestCompile 'org.robolectric:robolectric:2.3' 

... 

androidTest { 
    include '**/*Test.class' 
    exclude '**/espresso/**/*.class' 
    exclude '**/integration/**' 
} 

task integrationTest(type: Test) { 
    include '**/integration/**' 
} 

Điều này gây ra một lỗi khi đồng bộ hóa gradle trong AS:

Warning: project ':ProjectName': Unable to resolve all content root directories 
Details: java.lang.NullPointerException: null 

nhưng nếu tôi loại bỏ các nhiệm vụ integrationTest nó không xảy ra. Ngoài ra với sự hiện diện nhiệm vụ Tôi có thể chạy các nhiệm vụ 'integrationTest' nhưng điều này gây ra lỗi khác:

Error:Could not determine the dependencies of task ':ProjectName:integrationTest'. 
A base directory must be specified in the task or via a method argument! 

Trả lời

1

Nó không phải là hoàn toàn rõ ràng, nhưng lỗi này là do không xác định testClassesDir trong định nghĩa nhiệm vụ của bạn.

task integrationTest(type: Test) { 
    include '**/integration/**' 
    testClassesDir = file('build/intermediates/classes') 
} 

Tương tự như được mô tả trong Gradle User Guide cho plugin Java, nhưng nó không hoàn toàn dịch sang plugin Android. Tôi đã không làm việc ra tất cả các chi tiết chỉ được nêu ra, nhưng tôi sẽ cập nhật câu trả lời này như tôi con số nó ra.

Các vấn đề liên quan