Hi, I’m running my Android Gradle tasks on a Jenkins server which is behind a proxy. By setting the the proxy settings to my gradle.properties the builds just work fine and Gradle can also download its dependencies from the web using the gradle wrapper. ./gradlew assemblePaidFlavorDebug
But if I try to execute tests that are located in one project module by ./gradlew communicationModule:test
, which need to connect to a webservice in the internet, I get for all tests java.net.UnknownHostException
The linux server itself also has the proxy settings set.
When running the tests locally without a proxy they all complete successfully.
Do I need to set the proxy somewhere else for the unit tests?
Hi Rene, thanks for your reply. Do you mean overwriting the test task and define the gradle properties or can I pass them directly when I call it through the gradle wrapper? Can you give me an example on how to do it?
you don’t need to overwrite your test task(s). you just can add additional configuration. I meantioned the jvmArgs in my former reply. Using systemProperty is even simpler I guess.
Assuming you have a simple java project with a test task named test:
test {
systemProperty "http.proxyHost", "yourproxyHost"
systemProperty "http.proxyPort", "yourproxyPort"
}
if you want to configure all your tasks of type Test you can simply do
thanks for the samples. I tried now the following options:
android { tasks.withType(Test) { systemProperty "http.proxyHost" "proxy.muc" systemProperty "http.proxyPort" "8080" systemProperty "http.proxyUser" "user" systemProperty "http.proxyPassword" "pwd" systemProperty "https.proxyHost" "proxy.muc" systemProperty "https.proxyPort" "8080" systemProperty "https.proxyUser" "user" systemProperty "https.proxyPassword" "pwd" } }
which gives me: Could not find method systemProperty() for arguments [http.proxyHost] on task ':communicationModule:testDebugUnitTest'.
Running test { <same args as above> }
i get (no matter of inside or outside the android block) Could not find method test() for arguments [build_1le2oyl00m1ganma0nwiyz1om$_run_closure1$_closure7@609b041c] on project ':communicationModule'
Trying the following line at least gives no Gradle compile error… android { testOptions { unitTests.all { jvmArgs '-Dhttp.proxyHost=proxy.muc -Dhttp.proxyPort=8080 -Dhttp.proxyUser=user -Dhttp.proxyPassword=pwd -Dhttps.proxyHost=proxy.muc -Dhttps.proxyPort=8080 -Dhttps.proxyUser=user -Dhttps.proxyPassword=pwd' } } }
but I still get the java.net.UnknownHostException.
I was reading that if I need proxy authentication I need to touch my Java code as system properties do not work out of the box, but Gradle itself works when setting host, port, username and password in the gradle.properties.
Any idea why it’s still not working? Thanks again!