简体   繁体   中英

How do I make the `groovy` command exit non-zero for failing JUnit4 tests?

When running JUnit tests with the groovy command using the built-in automatic test runner, it exits 0 even when tests fail. I'd like the command to exit non-zero if there are test failures. Is there a way I can do this?

#!/usr/bin/env groovy
import org.junit.*

class BasicTest {

  @Test
  void test_failure() {
    assert false
  }
}
$ groovy --version
Groovy Version: 3.0.2 JVM: 13.0.2 Vendor: Oracle Corporation OS: Mac OS X

$ groovy basic_test.groovy
JUnit 4 Runner, Tests: 1, Failures: 1, Time: 8
Test Failure: test_failure(BasicTest)
Assertion failed:

assert false


        at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:434)
        ...

$ echo $?
0

Thanks folks!

Not seen people running tests like that before... (writing them as a *nix script)

You can do this though, to catch a failure, and exiting with 1

#!/usr/bin/env groovy
import org.junit.*
import org.junit.rules.*

class BasicTest {

  @Rule
  public TestRule watchman = [
    failed: {e, d -> 
      println d
      e.printStackTrace()
      System.exit(1)
    }
  ] as TestWatcher

  @Test
  void test_failure() {
    assert false
  }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM