Hi Dan, I have insight on this and I think that it is a surefire bug when using TestNG and AbstractTestNGSpringContextTests which requires subclassing and uses @BeforeMethod, @AfterMethod, the default generated suite file generates something like:
<test name="Command line test(failed)" junit="false" annotations="JDK"> <classes> <class name="com.workscape.orgchartconfig.OrgChartSyncGetTest"> <methods> <include name="springTestContextBeforeTestMethod"/> <include name="beforeClass"/> <include name="beforeMethod"/> <include name="afterMethod"/> <include name="springTestContextAfterTestMethod"/> <include name="springTestContextPrepareTestInstance"/> <include name="orgChartSyncGetTest"/> </methods> </class> </classes> </test> -- it appears that annotated methods are being incorrectly treated as test method. (I'm using 2.4.2) By explicitly providing a suite file like: <test name="this should work" junit="false" annotations="JDK" verbose="2"> <classes> <class name="com.workscape.dao.DAOTest" /> </classes> </test> <test name="this should work 2" junit="false" annotations="JDK" verbose="2"> <classes> <class name="com.workscape.dao.DAONegativeTest" /> </classes> </test> I was able to workaround the issue. dfabulich wrote: > > roadtripryan wrote: > >> I am trying to test using TestNG/Spring/ and Maven Surefire 2.4.1. >> >> My test suite runs great from within eclipse as individual tests or as a >> whole suite. When I try and run the tests in Maven Surefire, however, >> they >> fail. It appears Surefire is not calling the correct @BeforeMethod >> method. >> (When running the whole suite, or an individual test.) > > As you might expect, all Surefire does is call TestNG directly; we don't > directly call @BeforeMethod, @Test, etc. > >> From testing it, it seems Surefire calls the @BeforeMethod in the base >> class, but not in extending classes if they override it. I am extending >> Springs AbstractTestNGSpringContextTests, and it is calling the base >> class >> methods, not my extending classes @BeforeMethod and @AfterMethod. >> Interestingly, it seems to call the correct @BeforeClass method. > > If you're having a problem with a TestNG test that you believe should be > working, please file a bug on jira.codehaus.org; please also attach a > minimal Maven project that reproduces the problem. Ideally a test like > this should be nothing more than a pom.xml file and a couple of TestNG > classes in appropriate directories. (Please don't include any spring > classes in this test case unless it's absolutely necessary to do so.) > > -Dan > > -- View this message in context: http://old.nabble.com/TestNG-%40BeforeMethod-not-working-on-subclasses.-tp15418799p28539411.html Sent from the Surefire - Developer mailing list archive at Nabble.com.