Currently you cannot run the tests easily from within eclise using the run as junit...
capability because the test harness does not locate the jboss-aop.xml based on the
classpath. Something like this does this:
| package org.jboss.test.aop;
|
| import java.net.URL;
| import java.util.Properties;
|
| import org.jboss.aop.AspectXmlLoader;
| import org.jboss.test.AbstractTestDelegate;
|
| /**
| *
| * @author <a href="kabir.khan(a)jboss.com">Kabir Khan</a>
| * @version $Revision: 45977 $
| */
| public class AOPTestDelegate extends AbstractTestDelegate
| {
| /** The AOP URL used */
| private URL aopURL;
|
| Properties systemProps;
|
| public AOPTestDelegate(Class clazz)
| {
| // FIXME AOPTestDelegate constructor
| super(clazz);
| systemProps = (Properties)System.getProperties().clone();
| }
|
| public Properties getSystemProperties()
| {
| return systemProps;
| }
|
| /**
| * Look for a test specific aop descriptor based on the ctor
| * class first, and if none is found, the ManagedTest.class.
| */
| public void setUp() throws Exception
| {
| super.setUp();
| deployAOP(clazz);
| }
|
| /**
| * Undeployment any test specific aop descriptor deployed in setUp.
| */
| public void tearDown() throws Exception
| {
| super.tearDown();
| undeployAOP();
| }
|
| /**
| * Look for a test specific resource name by appending "-aop.xml"
| * to the referenceClass name as a resource. For example, a.b.SomeTest
| * would produce a a/b/SomeTest-aop.xml resource that is queried
| * for using clazz.getClassLoader().getResource("a/b/SomeTest-aop.xml");
| *
| * @param referenceClass - the class to use as the aop descriptor base name.
| * @return true if the aop descriptor was found and deployed,
| * false otherwise.
| * @throws Exception on failure to deploy the aop descriptor.
| */
| protected boolean deployAOP(Class referenceClass) throws Exception
| {
| String testName = referenceClass.getName();
| String pkg = referenceClass.getPackage().getName();
| int dot = pkg.lastIndexOf('.');
| if( dot > 0 )
| pkg = pkg.substring(dot+1);
| testName = pkg + "/jboss-aop.xml";
| URL url = clazz.getClassLoader().getResource(testName);
| if (url != null)
| {
| log.debug("Deploying " + url);
| aopURL = url;
| try
| {
| AspectXmlLoader.deployXML(aopURL);
| }
| catch (Throwable t)
| {
| throw new RuntimeException("Error deploying: " + url, t);
| }
| return true;
| }
| else
| {
| log.debug("No test specific deployment " + testName);
| return false;
| }
| }
|
| /**
| * Undeploy the aop descriptor deployed in deployAOP if
| * one was found.
| *
| */
| protected void undeployAOP()
| {
| if (aopURL == null)
| return;
| try
| {
| log.debug("Undeploying " + aopURL);
| AspectXmlLoader.undeployXML(aopURL);
| }
| catch (Exception e)
| {
| log.warn("Ignored error undeploying " + aopURL, e);
| }
| }
|
| }
|
Although this does deploy the aspects, the test I tried this with
(org.jboss.test.aop.precedence.PrecedenceTester) is still failing. Can you look into
getting this working Kabir?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3997099#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...