-- Leo's gemini proxy

-- Connecting to republic.circumlunar.space:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Make Android Gradle display unit test failure messages


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:


mrhaki


// 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'


Originally posted at 2017-05-09 23:30:05+00:00. Automatically generated from the original post : apologies for the errors introduced.


original post

-- Response ended

-- Page fetched on Sun May 19 05:44:40 2024