Main Tutorials

Gradle – How to continue build if test is failed

By default, the Gradle build process will be stopped and failed if any unit test is failed.


$ gradle build

:clean
:compileJava
:processResources
:classes
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test

com.mkyong.example.TestExample > test_example FAILED
    java.lang.Exception at TestExample.java:9
//...

3 tests completed, 1 failed
:test FAILED

//...

BUILD FAILED  // <-------------- see status

In this article, we will show you a few ways to continue the build process even if the test process is failing.

1. Ignore Failed Test

Try ignoreFailures settings.

build.gradle

test {
	ignoreFailures = true
}

Now, the build will continue even the test process is failing.


$ gradle build

:clean
:compileJava
:processResources
:classes
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test

com.mkyong.example.TestExample > test_example FAILED
    java.lang.Exception at TestExample.java:9
//...

3 tests completed, 1 failed
:test FAILED

//...

:check //ignore test failed, continue the build
:build

BUILD SUCCESSFUL  // <-------------- see status

2. Exclude the Failed Test

Find out the failed unit test and exclude it:

build.gradle

test {
	exclude '**/ThisIsFailedTestExample.class'
	exclude '**/*FailedTestExample*'
}

Refer this Gradle exclude some tests example

3. Skipped the Test

Last one, skipped the entire test process.


$ gradle build -x test

References

  1. Gradle – How to skip unit test
  2. Gradle – How to exclude some tests
  3. Gradle Test documentation

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
7 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Abdul Sayeed
6 years ago

Thanks a lot. This is very useful.

Tarakant
2 years ago

very good information. Thanks a lot, @mkyong.

jinwookh
3 years ago

Thanks a lot!

Vishal
4 years ago

I have one situation where I want to ignore failures on integrationTest. Is there any command line option available for gradle?
34 tests completed, 2 failed

> Task :integrationTest FAILED

FAILURE: Build failed with an exception

BUILD FAILED in 3m 41s
26 actionable tasks: 26 executed

Ramesh Korla
4 years ago

java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
at io.github.bonigarcia.wdm.WebDriverManager.(WebDriverManager.java:93)
at BaseProperties.BaseClass.initializeDriver(BaseClass.java:32)
at stepDefinations.stepDefination.initialize_the_browser_with_chrome(stepDefination.java:19)
at ?.Given Initialize the browser with Chrome(Branch.feature:5)

When I use the WebDriverManager dependency in maven project then run the TestRunner class then above error is display and doesn’t invoke the browser

Arjun bm
5 years ago

Hi Mykong,

Where should I use ignoreFailures settings?

Here is my build.gradle.

plugins {
// Apply the java-library plugin to add support for Java Library
id ‘java-library’
}

dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
api ‘org.apache.commons:commons-math3:3.6.1’

implementation ‘com.google.guava:guava:23.2’ // This dependency is used internally, and not exposed to consumers on their own compile classpath.
compile group: ‘com.google.guava’, name: ‘guava’, version: ‘25.1-jre’

compile group: ‘org.seleniumhq.selenium’, name: ‘selenium-java’, version: ‘3.14.0’
compile group: ‘io.github.bonigarcia’, name: ‘webdrivermanager’, version: ‘2.2.5’

compile group: ‘log4j’, name: ‘log4j’, version: ‘1.2.17’
compile group: ‘org.slf4j’, name: ‘slf4j-api’, version: ‘1.7.25’
compile group: ‘ch.qos.logback’, name: ‘logback-classic’, version: ‘1.2.3’

compile group: ‘org.apache.commons’, name: ‘commons-collections4’, version: ‘4.1’
compile group: ‘org.apache.commons’, name: ‘commons-lang3’, version: ‘3.3.1’
compile group: ‘org.apache.poi’, name: ‘poi’, version: ‘3.17’
compile group: ‘org.apache.poi’, name: ‘poi-ooxml’, version: ‘3.17’

compile group: ‘org.apache.commons’, name: ‘commons-collections4’, version: ‘4.1’
compile group: ‘org.testng’, name: ‘testng’, version: ‘6.14.3’

compile group: ‘org.yaml’, name: ‘snakeyaml’, version: ‘1.11’
}

// In this section you declare where to find the dependencies of your project
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
mavenCentral()
}

task runTests(type: JavaExec, dependsOn: ‘classes’) {
main = ‘org.testng.TestNG’
classpath = files(“./src/test/resources”,
project.sourceSets.main.compileClasspath,
project.sourceSets.test.compileClasspath,
project.sourceSets.main.runtimeClasspath,
project.sourceSets.test.runtimeClasspath)
args = [“-threadcount”, “1”, “-d”, “./build/”, “./testng.xml”]
}

Arjun bm
5 years ago
Reply to  Arjun bm

If i give ignoreFailures=true inside the task it shows error as below.

FAILURE: Build failed with an exception.

* Where:
Build file ‘D:\Backup\EC_Workspace\KEM\kem_testframework\build.gradle’ line: 48

* What went wrong:
A problem occurred evaluating root project ‘testautomation’.
> Could not set unknown property ‘ignoreFailures’ for task ‘:runTests’ of type org.gradle.api.tasks.JavaExec.

* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output. Run with –scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s