2013-06-20 50 views
24

Tôi đang cố gắng để có được kiểm tra (junit và robolectric) làm việc trong một dự án Android nhưng hoàn toàn bị mắc kẹt. Vấn đề chính của tôi là tất cả các thử nghiệm tôi thấy với gradle bằng cách nào đó kéo trong plugin java và sau đó tôi nhận được lỗi này:thử nghiệm junit với gradle cho một dự án android

The 'java' plugin has been applied, but it is not compatible with the Android plugins. 

Các lối thoát duy nhất tôi nhìn thấy vào lúc này là để chia thành thử nghiệm và dự án ứng dụng - nhưng Tôi muốn tránh điều đó. Bất kỳ ví dụ/gợi ý nào sẽ được đánh giá cao!

Trong the official documentation không có đề cập đến kiểm tra đơn vị - chỉ thiết bị đo kiểm - nhưng tôi muốn kiểm tra đơn vị để có kết quả nhanh.

+0

Lưu ý rằng có sự ủng hộ kiểm tra đơn vị chính thức từ AS 1.1 và Android Gradle Plugin 1.1.0. http://tools.android.com/tech-docs/unit-testing-support –

Trả lời

27

Bạn không cần plugin Java vì Android sẽ chăm sóc những gì bạn cần chủ yếu, từ những gì tôi đã thấy cho đến thời điểm này.

tôi quản lý để có được Robolectric và JUnit xét nghiệm của tôi chạy qua blog của người đàn ông này. http://tryge.com/2013/02/28/android-gradle-build/

tập tin build.gradle của tôi trông như thế này (nơi các tập tin thử nghiệm của tôi là trong {} projectdir/thư mục kiểm tra

... 
// Unit tests 

sourceSets { 
     unitTest { 
       java.srcDir file('test') 
       resources.srcDir file('test/resources') 
     } 
} 

dependencies { 
     unitTestCompile files("$project.buildDir/classes/debug") 
     unitTestCompile 'junit:junit:4.11' 
     unitTestCompile 'org.robolectric:robolectric:2.1.1' 
     unitTestCompile 'com.google.android:android:4.0.1.2' 
} 

configurations { 
     unitTestCompile.extendsFrom runtime 
     unitTestRuntime.extendsFrom unitTestCompile 
} 

task unitTest(type:Test, dependsOn: assemble) { 
     description = "run unit tests" 
     testClassesDir = project.sourceSets.unitTest.output.classesDir 
     classpath = project.sourceSets.unitTest.runtimeClasspath 
} 

build.dependsOn unitTest 
+0

cảm ơn! có hoạt động kết hợp với Android-Studio cho bạn không? Rất thích chạy các bài kiểm tra từ IDE nhưng chưa làm việc cho tôi – ligi

+0

Tôi chưa sử dụng Android Studio. Tôi chỉ cần chạy 'gradle build' từ dòng lệnh. Vì AS có tích hợp Gradle, và nó chạy 'build', nó cũng sẽ chạy tác vụ 'unitTest', vì vậy tôi đã nghĩ nó sẽ chạy, mặc dù tôi chưa thử nghiệm điều này. – newfivefour

+0

Tôi dường như không thể làm điều này để làm việc, tôi nhận được lỗi classpath nơi kiểm tra đơn vị của tôi không thể tìm thấy robolectric hoặc junit. Tôi đang chạy Gradle 1.6 từ dòng lệnh với nhiệm vụ ./gradlew unitTest – gleenn

1

hướng dẫn này có thể giúp đỡ - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio

gradle mới nhất các thử nghiệm cần được theo androidTest dir

Cũng trong gradle.build của bạn:

dependencies { 
    androidTestCompile 'junit:junit:4.+' 
} 

cũng thêm những người dưới defaultConfig {

testPackageName "test.java.foo" 
testInstrumentationRunner "android.test.InstrumentationTestRunner" 

}

+0

Không. Nếu thử nghiệm đơn vị của bạn không có phụ thuộc hoặc chỉ phụ thuộc đơn giản trên Android, bạn nên chạy thử nghiệm của mình trên máy phát triển cục bộ. http://developer.android.com/intl/ru/training/testing/unit-testing/local-unit-tests.html – babay

7

AndroidStudio và các plugin Android Gradle mới hiện đang cung cấp hỗ trợ đơn vị kiểm tra chính thức .

này được hỗ trợ từ Android Studio 1.1+ và Android Gradle phiên bản plugin 1.1.0+

Dependencies bây giờ có thể được khai báo là testCompile:

dependencies { 
    testCompile 'junit:junit:4.12' 
    testCompile "org.mockito:mockito-core:1.9.5" 
} 

Xem thêm chi tiết ở đây: Unit testing support - Android Tools Project Site.

0

Đây là những gì làm việc cho chỉ tôi:

androidTestCompile 'net.bytebuddy:byte-buddy-android:0.7.8' 
Các vấn đề liên quan