I just opened my sample project and saw this open case in it. I was a bit bored, so I took some more time in order to recreate your situation without an application server, using simple-jndi in my stand-alone Java program in order to emulate the DataSource.getConnection(..) call. BTW, I still think it would have been your job to provide working sample code, as I said. I also think it was not very nice to ignore my request because just because you are lazy to help me help you.
As a side note, for me the aspect only fires with call(), not with execution(). If it works for you anyway, I conclude that you must be using load-time weaving (LTW). Anyway, it does not make a big difference for the question at hand. So you said you wanted to run a JUnit test against a working database connection, not a mocked one. But then you do not write a unit test but an integration test. Is this what you want? And if so, what are you trying to test? That weaving actually works? I do not think it makes a lot of sense to test the weaving mechanism. I think you should test your own aspect as such in a unit test. An integration test on a high level, such as checking that the aspect alters a result in contrast to running the application without aspect might make sense, but as I said, you should not test AspectJ but rather your aspect. So which one do you want? Please provide some feedback, then I can help you take the next step. I just need to know the purpose of your test first. Regards -- Alexander Kriegisch https://scrum-master.de Alexander Kriegisch schrieb am 23.01.2019 20:16: > it would be helpful to get some sample code from your target class. I > cannot write a test for you or help you write one if I have nothing to > run it against. Ideally, please provide an MCVE > (http://stackoverflow.com/help/mcve). > > Sorry, I am unfamiliar with database programming and a quick sample I > created with H2 according to the tutorial at > http://zetcode.com/java/h2database/ does not use > > javax.sql.DataSource.getConnection(..) > > but > DriverManager.getConnection(url, user, passwd) > > thus the aspect does not fire. I tried it your way, but after a few > minutes I could not get it running because of an exception like > > javax.naming.NoInitialContextException: Need to specify class name > in environment or system property, or as an applet parameter, or in > an application resource file: java.naming.factory.initial > > Then I remembered that actually it is not my job to provide an MCVE, > interested as I might be in helping you. So please help me get running > code first, then I can inspect your testing and mocking situation. > > > Chrislie schrieb am 22.01.2019 05:57: > >> I have created aspect below which basically pointcut everytime we get >> a new connection from DB and then run some stored procedure on that >> connection. I have manually tested it and it is working fine. Now how >> do i unit test this using Junit and/or mockito ? >> >> If i mock a connection with something like Connection connection = >> Mockito.mock(Connection.class); then it doesn't serve the purpose as >> i am mocking the connection. Basically i want to check that this >> aspect works when every time we get a new connection (and not mock >> connection ) . Any thoughts ?? >> >> import org.aspectj.lang.annotation.AfterReturning; >> import org.aspectj.lang.annotation.Aspect; >> import org.springframework.stereotype.Component; >> >> import java.sql.CallableStatement; >> import java.sql.Connection; >> import java.sql.SQLException; >> >> @Aspect >> @Component >> public class GetConnectionAspect { >> >> @AfterReturning(pointcut = "execution (* >> javax.sql.DataSource.getConnection(..))", returning = "connection") >> public void interceptConnection(Connection connection) throws >> SQLException { >> CallableStatement callableStatement = null; >> try { >> callableStatement = connection.prepareCall("{call >> stored_procedure()}"); >> callableStatement.execute(); >> >> } catch (SQLException e) { >> System.out.println("Exception occurred while executing >> the stored procedure" + e); >> } finally { >> if(callableStatement != null){ >> callableStatement.close(); >> } >> } >> } >> } _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/aspectj-users