Browse Source

moving unit tests from .testsuite -> .aop

conversation
Chris Beams 16 years ago
parent
commit
57b5bdea20
  1. 57
      org.springframework.aop/src/test/java/org/springframework/aop/aspectj/annotation/ArgumentBindingTests.java
  2. 37
      org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/annotation/PointcutWithAnnotationArgument.java

57
org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/annotation/ArgumentBindingTests.java → org.springframework.aop/src/test/java/org/springframework/aop/aspectj/annotation/ArgumentBindingTests.java

@ -16,46 +16,48 @@ @@ -16,46 +16,48 @@
package org.springframework.aop.aspectj.annotation;
import java.lang.reflect.Method;
import static org.junit.Assert.*;
import junit.framework.TestCase;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.junit.Test;
import org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer;
import org.springframework.beans.ITestBean;
import org.springframework.beans.TestBean;
import org.springframework.test.AssertThrows;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Adrian Colyer
* @author Juergen Hoeller
* @author Chris Beams
*/
public class ArgumentBindingTests extends TestCase {
public class ArgumentBindingTests {
@Test(expected=IllegalArgumentException.class)
public void testBindingInPointcutUsedByAdvice() {
TestBean tb = new TestBean();
AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb);
proxyFactory.addAspect(NamedPointcutWithArgs.class);
final ITestBean proxiedTestBean = (ITestBean) proxyFactory.getProxy();
new AssertThrows(IllegalArgumentException.class) {
public void test() throws Exception {
proxiedTestBean.setName("Supercalifragalisticexpialidocious");
}
}.runTest();
ITestBean proxiedTestBean = (ITestBean) proxyFactory.getProxy();
proxiedTestBean.setName("Supercalifragalisticexpialidocious"); // should throw
}
@Test(expected=IllegalStateException.class)
public void testAnnotationArgumentNameBinding() {
TransactionalBean tb = new TransactionalBean();
AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb);
proxyFactory.addAspect(PointcutWithAnnotationArgument.class);
final ITransactionalBean proxiedTestBean = (ITransactionalBean) proxyFactory.getProxy();
new AssertThrows(IllegalStateException.class) {
public void test() throws Exception {
proxiedTestBean.doInTransaction();
}
}.runTest();
ITransactionalBean proxiedTestBean = (ITransactionalBean) proxyFactory.getProxy();
proxiedTestBean.doInTransaction(); // should throw
}
@Test
public void testParameterNameDiscoverWithReferencePointcut() throws Exception {
AspectJAdviceParameterNameDiscoverer discoverer =
new AspectJAdviceParameterNameDiscoverer("somepc(formal) && set(* *)");
@ -86,3 +88,24 @@ public class ArgumentBindingTests extends TestCase { @@ -86,3 +88,24 @@ public class ArgumentBindingTests extends TestCase {
}
}
/**
* Represents Spring's Transactional annotation without actually introducing the dependency
*/
@Retention(RetentionPolicy.RUNTIME)
@interface Transactional {
}
/**
* @author Juergen Hoeller
*/
@Aspect
class PointcutWithAnnotationArgument {
@Around(value = "execution(* org.springframework..*.*(..)) && @annotation(transaction)")
public Object around(ProceedingJoinPoint pjp, Transactional transaction) throws Throwable {
System.out.println("Invoked with transaction " + transaction);
throw new IllegalStateException();
}
}

37
org.springframework.testsuite/src/test/java/org/springframework/aop/aspectj/annotation/PointcutWithAnnotationArgument.java

@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.aop.aspectj.annotation;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Juergen Hoeller
*/
@Aspect
public class PointcutWithAnnotationArgument {
@Around(value = "execution(* org.springframework..*.*(..)) && @annotation(transaction)")
public Object around(ProceedingJoinPoint pjp, Transactional transaction) throws Throwable {
System.out.println("Invoked with transaction " + transaction);
throw new IllegalStateException();
}
}
Loading…
Cancel
Save