Make Android Gradle display unit test failure messages
May 10, 2017 [Android, Gradle, Java, Tech, Test Driven]By default, Gradle does not show you what happened when a unit test failed:
$ ./gradlew test
...
MyTest > Black_is_white FAILED
org.junit.ComparisonFailure at MyTest.java:6
^^^ WHAT ACTUALLY FAILED????
...
This is insane, and can be fixed (thanks to mrhaki) by editing build.gradle to add:
// NOTE: this is the non-Android solution - add to build.gradle
test {
testLogging {
exceptionFormat = 'full'
}
}
The above doesn't work with Android, but something similar does:
// Android solution: add this to app/build.gradle
android.testOptions.unitTests.all {
testLogging {
exceptionFormat = "full"
}
}
And sanity prevails:
$ ./gradlew test ... MyTest > Black_is_white FAILED org.junit.ComparisonFailure: expected:<[black]> but was:<[white]> at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at MyTest.Black_is_white(MyTest.java:6) ...
Files for plain Gradle:
$ cat build.gradle apply plugin: 'java' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:[4,)' } test { testLogging { exceptionFormat = 'full' } } $ cat src/test/java/MyTest.java public class MyTest { @org.junit.Test public void Black_is_white() { org.junit.Assert.assertEquals("black", "white"); } }
Files for Android+Gradle
$ cat build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' } } allprojects { repositories { jcenter() } } $ cat app/src/main/AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.artificialworlds.testapp"> </manifest> $ cat app/src/test/java/MyTest.java public class MyTest { @org.junit.Test public void Black_is_white() { org.junit.Assert.assertEquals("black", "white"); } } $ cat build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' } } allprojects { repositories { jcenter() } } $ cat local.properties sdk.dir=/home/andy/Android/Sdk $ cat settings.gradle include ':app'