2016-06-30 11 views
6

build.gradleLàm thế nào để vượt qua các thuộc tính hệ thống cho các bài kiểm tra trong gradle một cách thông minh?

tasks.withType(Test){ 
    systemProperties=System.properties 
    println systemProperties['param'] 
} 

Bây giờ tôi có thể vượt qua các thông số trong dòng lệnh:

gradle test -Dparam=10 

hoặc đặt chúng trong gradle.properties:

systemProp.param=15 

Lý tưởng nhất Tôi muốn đặt các giá trị mặc định trong số gradle.properties và có thể ghi đè chúng từ dòng lệnh. Thật không may nếu tôi làm điều đó, gradle.properties có quyền ưu tiên và -Dparam=10 bị bỏ qua.

Bạn có thể đưa ra bất kỳ giải pháp nào về điều đó không?

+1

https://discuss.gradle.org/t/can-props-from-gradle-properties-be-overwritten-with-d-parameter/6759/6 Dường như thuộc tính hệ thống được xác định trong gradle.properties hiện không thể được ghi đè bằng cách sử dụng -D – tomasulo

+0

cảm ơn bạn, cập nhật trình bao bọc gradle thành mới nhất, giải quyết được sự cố. –

Trả lời

1

https://issues.gradle.org/browse/GRADLE-2122

Nó hoạt động từ 2.12 hay 2.13 "một cách thông minh" rồi!

Ví dụ trên đang làm việc, tùy chọn dòng lệnh -D Overdrive giá trị mặc định trong gradle.properties

0

Tôi đang sử dụng gradle 2.12 và chia sẻ làm thế nào tôi sử dụng nó:

test { 
    // support passing -Dsystem.property=value to bootRun task 
    systemProperties = System.properties 
} 

Tôi có Các bài kiểm tra JUnit mà tôi muốn bỏ qua trừ khi một thuộc tính được sử dụng để bao gồm các bài kiểm tra như vậy. Sử dụng JUnit Giả sử cho bao gồm các bài kiểm tra điều kiện:

//first line of test 
assumeThat(Boolean.parseBoolean(System.getProperty("deep.test.run","false"),true) 

Việc làm này với gradle đòi hỏi hệ thống bất động sản cung cấp tại thời điểm chạy gradle xây dựng, thể hiện ở đây,

gradle build -Ddeep.test.run=true 

đã thực sự đi qua đến kiểm tra.

Hy vọng điều này sẽ giúp những người khác thử phương pháp này để chạy thử nghiệm có điều kiện.

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