我对方面的概念很陌生。所以,我正在尝试使用方面来打印每个执行的函数的名称。看了几个教程后,我得到了类似的东西:
package com.skyfall.model.slide2;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class testAspect {
@Before("execution(public * *(..))")
public void log(JoinPoint joinPoint) {
System.out.println("----logBefore is running.-----");
System.out.println("executing ".concat(joinPoint.getSignature().getName()));
}
}
但是,这似乎没有任何效果。
编辑:这是我正在使用的特定类:
package com.skyfall.model.slide2;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class CostDto {
private String text;
private int value;
private static final String RUPEES = "Rs.";
private static final String SPACE_DELIMITTER = " ";
public CostDto(String text) {
this.text = text;
this.value = getValueFromText(text);
}
public CostDto(int value) {
this.value = value;
this.text = getTextFromValue(value);
}
public CostDto(String text, int value) {
this.text = text;
this.value = value;
}
public int getValueFromText(String text) {
int length = text.length();
String value = text.substring(0, length - RUPEES.length());
value = value.trim();
return Integer.parseInt(value);
}
public String getTextFromValue(int value) {
return String.valueOf(value) + SPACE_DELIMITTER + RUPEES;
}
public String getText() {
return text;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
这是JUnit测试:
package com.skyfall.model.slide2;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import com.skyfall.persistence.base.BaseControllerTest;
public class CostDtoTest extends BaseControllerTest {
private CostDto cost1;
@Before
public void init() {
cost1 = null;
}
@Test
public void testValueConstructor() {
cost1 = new CostDto("123 Rs.");
assertEquals(123, cost1.getValue());
}
@Test
public void testTextConstructor() {
cost1 = new CostDto(8901);
System.out.println(cost1.getText());
assertEquals("8901 Rs.", cost1.getText());
}
@Test
public void testValueAndTextConstructor() {
cost1 = new CostDto("491 Rs.", 491);
assertEquals(491, cost1.getValue());
assertEquals("491 Rs.", cost1.getText());
}
}
测试工作正常,打印出“8901 Rs”。正如所料,但testAspect没有做任何事情。