[infinispan-dev] usage of alwaysRun=true on @BeforeMethod and alike

Mircea Markus mmarkus at redhat.com
Wed May 8 17:29:53 EDT 2013


On 8 May 2013, at 20:46, Adrian Nistor wrote:

> @BeforeMethod + alwaysRun=true is indeed pretty wrong and pointless in relation to groups but @AfterMethod + alwaysRun=true seems to make sense given this bit of javadoc: "If set to true, this configuration method will be run even if one or more methods invoked previously failed or was skipped". Does this imply our precious teardown method will be skipped because the test failed unless we add alwaysRun=true?
right, that's what I understand as well. Given that it might make sense to add alwaysRun to @AfterMethod as long as you expect it to be invoked in certain situations without the corresponding @BeforeMethod. The situation I'm talking about is when @BeforeMethod doesn't have "alwaysRun" and the owner class is in another test group, e.g.:


@Test(groups="functional")
class NeverFailIntemittentlyTest {

CacgeManager cm;

@BeforeMethod
void setUp() {
   cm = new EmbeddedCacheManager();
}


@AfterMethod (alwaysRun=true)
void tearDown() {
   cm.stop();
}

}

If we run all the tests in the "xsite" profile, tearDown will throw NPE as setUp is not invoked. 

Writing tearDown like this should solve the problem:
@AfterMethod (alwaysRun=true)
void tearDown() {
   if (cm != null) cm.stop();
}



Cheers,
-- 
Mircea Markus
Infinispan lead (www.infinispan.org)







More information about the infinispan-dev mailing list