如何应用方面并使用Maven执行JUNIT测试,而无需更改源Maven项目

问题描述 投票:0回答:1

在一个Maven Project A中,有一些JAVA组件进行了几个JUNIT测试。

我的目标是将方面(使用FactionsJ)应用于组件类,然后执行JUNIT测试。该方面将对组件方法调用进行一些计数。 我知道编织代码的不同方法(编译,编译后,加载时间)。 我也知道我想使用的

aspectj-maven-plugin

我面临的挑战是,我不想触摸任何项目A的代码,例如更改pom.xml或添加该方面。 另外,我想使用Maven Target进行项目A的JUNIT测试。

所以我的问题是如何设置/配置另一个Maven项目B

关键了我的方面

编织项目A

的组件类别

Mabe重新包装编织类

    执行带有编织类的项目A的JUNIT测试
  • 有人做了类似的事情,可以将我指向正确的方向?
  • 注:这个答案是初步的。它可能进一步发展取决于OP的反馈。 阅读您的问题时,我想到了几个事物:

如果您想计算呼叫,为什么不只是将诸如Junit的Mockito之类的东西或带有其内置模拟功能的Swite或Switch switch switch switch呢?为什么要使用方面来计算交互?当然有可能,但是您需要什么嘲笑工具可以开箱即用?
java maven junit aspectj aspectj-maven-plugin
1个回答
0
投票

如果单位测试现场在模块A中,为什么不想触摸同一模块?具体来说,为什么您甚至不想触摸POM以确保方面编织?那似乎是不自然的。您对此没有很好的解释。 “我不想”不计算。

从模块B,您不能仅执行模块A的单元测试,除非您当然在A中创建一个测试罐并依赖于B。但是,即使为此,您也需要触摸POM A才能构建测试罐

  • 您有多种或多或少的直接方法来解决问题 - 始终假设您不仅要计算与模拟工具的互动,而且实际上确实坚持使用fackingj:

  • 将测试方面作为测试类。运行测试时,请使用加载时间编织(LTW),可以在SureFire或FailSafe中轻松配置。这样,应用程序代码在测试过程中仍无法使用,并且您的方面仍在应用。

  • 如果由于某种原因,测试方面确实可以重复使用并在多个模块中使用,请将其放入模块t中,并使A具有对T的测试依赖。需要相同的测试方面。

  • 当课程中,您可以与常规(Untoven)应用程序JAR A一起创建一个测试罐在编织版本的A上。但不仅看起来不必要地复杂,还无法解决在原始A项目中执行的测试的问题,然后再在编织中再次解决A_ASPECTTEST模块。为了避免这种情况,您将不得不将Surefire执行停用。但是想象一下,一个新的开发人员加入了您的团队,试图了解您的构建...您会得到图片。

我的建议是保持简单,并以降低的优先顺序使用模拟工具或选项1或2之一。

P.S。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.