我有 spring aop 方面,它有如下方法:它是一个将在特定方法之前调用的方面。
public void someMethod(JoinPoint jp) {
//Somelogic
}
我需要为此编写一个 junit 测试用例。我如何实例化参数并将其发送到 someMethod
?我的意思是如何用参数填充 JoinPoint
?如何在关节点设置参数并传递它?方面在应用程序上下文 xml 文件中配置。
谢谢!
最佳答案
我认为您在这里有几个不错的选择...
JoinPoint
是一个接口(interface)。因此,您应该能够创建自己的“ stub ”实现,它具有您期望的行为。在您的测试中,实例化此 stub 的一个新实例并将其传递给someMethod
方法。- 使用模拟框架来模拟
JoinPoint
对象,并在模拟上设置预期的行为。如果您一般不熟悉模拟框架,这可能听起来有些陌生,所以我建议您查看 Mockito 上的文档。 ,这是一个流行的模拟框架。
当谈到单元测试时,最佳实践(至少我的)建议测试应始终使用某种模拟/ stub (用于成员和传递的参数)以确保单元测试仅测试单元。如果您要使用 Spring/AspectJ 使用的 JoinPoint
实现,那么您可能还会在 中测试一些实现逻辑>您的 单元测试。如果将来这些实现细节发生变化,您的测试可能会中断,而您无需更改任何代码。
关于java - 通过连接点进行 spring 方面的单元测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881020/