One approach we've taken in the past is making the junit test skip itself when some precondition is not true. Then, we often create a property which people can use to cause the skipped tests to become a hard error.
For example, all the tests that rely on libhadoop start with these lines: > @Test > public void myTest() { > Assume.assumeTrue(NativeCodeLoader.isNativeCodeLoaded()); > ... > } This causes them to be silently skipped when libhadoop.so is not available or loaded (perhaps because it hasn't been built.) However, if you want to cause this to be a hard error, you simply run > mvn test -Drequire.test.libhadoop See TestHdfsNativeCodeLoader.java to see how this is implemented. The main idea is that your Jenkins build slaves use all the -Drequire lines, but people running tests locally are not inconvenienced by the need to build libhadoop.so in every case. This is especially good because libhadoop.so isn't known to build on certain platforms like AIX, etc. It seems to be a good tradeoff so far. I imagine that s3 could do something similar. cheers, Colin On Fri, Dec 14, 2012 at 9:56 AM, Steve Loughran <ste...@hortonworks.com> wrote: > The swiftfs tests need only to run if there's a target filesystem; copying > the s3/s3n tests, something like > > <property> > <name>test.fs.swift.name</name> > <value>swift://your-object-store-herel/</value> > </property> > > How does one actually go about making junit tests optional in mvn-land? > Should the probe/skip logic be in the code -which can make people think the > test passed when it didn't actually run? Or can I turn it on/off in maven? > > -steve