【问题标题】:Creating a pointcut in Aspectj for each Junit test in a testsuite [closed]在 Aspectj 中为测试套件中的每个 Junit 测试创建一个切入点 [关闭]
【发布时间】:2013-03-21 05:55:59
【问题描述】:

您好,我在将 AspectJ 与 Junit 测试集成时遇到问题。

我需要为测试套件中的每个测试获取不同的日志。所以我需要知道什么时候运行一个新的测试用例,什么时候完成。如何定义这样的切入点?

下面的切入点对我不起作用,它只输入了一次。

pointcut testIsAboutToBegin()
: execution (* *.test(..));

【问题讨论】:

  • 如果你可以使用 JUnit4 @Before 或 JUnit3 中的 pendant 通过 setUp() 方法,为什么还要使用方面?
  • 因为我在用一个切面跟踪每个测试用例的方法调用,我需要知道什么时候开始一个新的跟踪。
  • 好的,但您也可以在 tearDown() 方法中触发新的跟踪(或在 JUnit4 中使用 @After 注释)。
  • @Nicolas 如果问题无关紧要并且没有描述实际问题,请更新或删除它,以使其看起来不是一个未解决的问题
  • 请删除这个问题 - 这无关紧要。

标签: java junit aop aspectj


【解决方案1】:

使用环绕建议怎么样?

pointcut aroundTest(): 
    execution(public void test*(..));

  void around() throws Exception: aroundTest() {
     LOG.info("start");
     proceed();
     LOG.info("stop");
  }

【讨论】:

    【解决方案2】:

    你好,你应该使用 before() 和 after() 来达到这个目的,试试这个:

    before () : testIsAboutToBegin() {
        System.out.println("starting test ... ");
    }
    
    after () : testIsAboutToBegin() {
        System.out.println("ending test ... ");
    }
    
    
    //for GetJUnit 4.x
    pointcut testJUnit4xIsAboutToBegin() : execution(@Test * *(..))
    
    pointcut testIsAboutToBegin() : execution (* *.test*(..));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多