首页 > 其他 > 详细

AOP的Junit测试

时间:2020-04-19 00:46:23      阅读:79      评论:0      收藏:0      [点我收藏+]

加入依赖

======================

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.5.RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>

 

配置文件

======================

 

技术分享图片

 

 

定义接口及接口实现

======================

public interface UserDao {
void add(int a, int b);
}

------

@Component
public class UserDaoImpl implements UserDao {

public void add(int a, int b) {
System.out.println(a+b);
}

}

 

定义切面类

======================

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component("aspect")
@org.aspectj.lang.annotation.Aspect
public class Aspect {

@Pointcut("execution(* add(..))")
public void pointCut() {

}

@Before("pointCut()")
public void before(){
System.out.println("***********before");
}
@After("pointCut()")
public void after(){
System.out.println("***********after");
}
}

 

单元测试

======================

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.signit.test.dao.UserDao;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-aop.xml")
public class AspectTest {

@Autowired
private UserDao userDaoImpl;

@Test
public void test() {
userDaoImpl.add(1, 2);
}
}

 

测试结果:

技术分享图片

 

 

===============================

===============================

===============================

===============================

===============================

===============================

采用配置类的方式(不需要xml配置)

 

 

创建一个配置类

======================

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass =false)
@ComponentScan("cn")
public class Config {

}

 

其余不变、再进行测试

======================

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.signit.test.config.Config;
import cn.signit.test.dao.UserDao;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringJUnitConfig(Config.class)
public class AspectTest2 {
@Autowired
private UserDao userDaoImpl;

@Test
public void test() {
userDaoImpl.add(1, 2);
}
}

 

测试结果:

技术分享图片

 

 

====================

关于xml中通知类型的XML配置方法

以及execution表达式的细节后面需

要再查询。

 

AOP的Junit测试

原文:https://www.cnblogs.com/dengw125792/p/12727672.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!