Java

2012-09-18 6 views
7

istisnasını attıran yöntem adı nasıl alınır Bir istisna TestNG test yöntemimden sonra çalıştırılan bir yönü var. Test yöntemi adını benim Aspectj yöntemime almak istiyorum.Java

Bunun hakkında herhangi bir düşünce var mı? Aşağıda benim kod örneğini bulabilirsiniz:

Unsur:

pointcut publicCall(): call(public * *(..)); 

after() throwing (AssertionError e): publicCall() { 
    logger.debug("Assertion Error thrown"); 
    System.out.println("Threw an exception: " + e); 
} 

Testi:

@Test 

public void testScenarioOne(){ 
    logger.debug("From Scenario One Test"); 
    Assert.assertEquals(true, false); 
} 

cevap

4
Sen call den execution için pointcut türünü değiştirmek gerekir

:

pointcut publicMethod(): execution(public * *(..)); 

after() throwing (AssertionError e): publicMethod() { 
    System.out.println(thisJoinPointStaticPart.getSignature()); 
} 

Düzenleme: Belki daha da temiz olacak özellikle @Test açıklamalı yöntemlere kesmek:

import org.testng.annotations; 

public aspect TestExceptionInterceptor { 
    pointcut testMethod(): execution(@Test * *(..)); 

    after() throwing (AssertionError e): testMethod() { 
     System.out.println(thisJoinPointStaticPart.getSignature()); 
    } 
} 
+0

Teşekkür ederiz! Çağrıdan yürütme noktasından nokta işaretinin değiştirilmesi hile yaptı. (ikinci snippet derlenmedi). – rookie007r

+0

Hatırladığım kadarıyla, ikinci snippet'i kopyaladım ve editörümden sadece iyi bir şekilde derledim. Daha spesifik olabilir misin? Hangi hata mesajını alıyorsunuz? – kriegaex

+0

Aldığınız hata büyük olasılıkla pointcut testMethod(): execution (@ org.testng.annotations.Test * * (..)) gibi tam olarak nitelenmiş paketi belirtmeniz gerektiğinden; –

2

Sen kullanabilirsiniz:

thisJoinPoint.getSignature().getName() 

doğrudan 'dan özel durum olmasa da Test yönteminiz. Assert.equals(), test yönteminizi istisna atıyor.

+1

ben thisStaticJoinPoint olur düşünüyorum ayrıca çalışır. –

+1

Şey ... Teşekkür ederim! ama bu bana "assertEquels" yöntemini veriyor. Test yöntemine (yani testScenarioOne) ihtiyacım var. – rookie007r