AspectJ capturando tipo de class

2 respostas
A

Olá pessoal

tenho o seguinte Aspecto: ps: ele está funcionando, tirei os imports pq só estou focando na minha dúvida.
public aspect MyTestAspect {
	
before(): execution (* TestProf.test*(..)){
		System.out.println(thisJoinPoint.getSignature().getName());
	}
}

onde TestProf é um teste de unidade.
O problema é o seguinte: em vez de executar explicitamente o nome da classe de teste
TestProf, executar qualquer classe de teste que eu passar. Como se fosse por parametro.

no caso: Forçando a barra, a idéia era pra ficar mais ou menos:
public aspect MyTestAspect {

	private String nomeGenericoDeTest ;

         before(): execution (* nomeGenericoDeTest.test*(..)){
		System.out.println(thisJoinPoint.getSignature().getName());
	}
}

o comportamento ideal, era que ele fizesse o weaving do aspecto, com qualquer classe de teste que eu passasse
como parâmetro.

Simplficando a pergunta: Tem como repassar algum parâmetro à um aspecto?

2 Respostas

ramilani12

Acho que isso seria impossível.

Mas prq vc não padroniza o nome das Classes?

Por exemplo as classes de testes deveria começar com nome Tests?
E pointcut ficaria assim:

before(): execution (Test*.test*(..)){  
         System.out.println(thisJoinPoint.getSignature().getName());  
 }

Ele irá capturar qualquer classe cujo nome comece com Tests, a mesma ideia que vc utilizou para metodo test*()

A

Justamente , pode-se fazer dessa forma,

mas como uso o JUnit 4, pode-se criar um test com o annotation @Test
e o nome do teste não precisaria necessariamente ser o " testXPTO " como no JUnit 3.

A saída “forçada”, e única a meu ver seria, ter como requisitos que os tests teriam " test* "
e a class de teste também tivesse um " * Test ".

Criado 4 de setembro de 2008
Ultima resposta 4 de set. de 2008
Respostas 2
Participantes 2