2013-03-21 64 views
4

Hello Im在集成AspectJ和Junit测试时遇到问题。在Aspectj中为测试套件中的每个Junit测试创建一个切入点

我需要为测试套件中的每个测试获取不同的日志。所以我需要在我的方面知道新的测试用例何时运行以及何时完成。我怎样才能定义这样的切点?

下面的切入点不适用于我,它只是输入一次。

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

为什么要用一个方面,如果你能与JUnit4 @Before或在JUnit3挂件使用使用setUp()方法? – Markus 2013-03-21 06:01:53

+0

因为我使用某个方面来跟踪每个测试用例的方法调用,并且我需要知道何时开始一个新的跟踪。 – 2013-03-21 06:04:14

+0

好的,但你也可以触发在tearDown()方法中启动一个新的跟踪(或者在JUnit4中用@After注释)。 – Markus 2013-03-21 06:06:30

回答

0

如何使用around建议?

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

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

你好,你应该()之前和之后()用于此目的使用,试试这个:

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*(..)); 
相关问题