ここでJUnit + Maven + AspectJのほぼすべての質問に従っています。それ。AspectJ + Junit + Maven - テストではポイントカットが認識されましたが、NoSuchMethodError:aspectOf()例外がスローされました
私はちょうど一の態様でMavenのモジュールがあります。
@Aspect
public class AssertionAspect {
@Pointcut("execution(@org.junit.Test * *())")
public void testMethodEntryPoint() {}
@Before("testMethodEntryPoint()")
public void executeBeforeEnteringTestMethod() {
System.out.println("EXECUTE ACTION BEFORE ENTERING TEST METHOD");
}
@After("testMethodEntryPoint()")
public void executeAfterEnteringTestMethod() {
System.out.println("EXECUTE ACTION AFTER ENTERING TEST METHOD");
}
}
非常に非常に簡単。私がしたいのは、私のテストプロジェクトでテストメソッドを実行する前後に、@Test
という注釈が付けられていることです。
さて、私はこのような私の<build>
でaspectj-maven-plugin
使用しています:私はsrc/main/java
では授業がないので、私は私が何を知って、それが本当だと、それはokです(<execution>
に何compile
目標を持っていない
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>my.package</groupId>
<artifactId>with-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
1)私は私が私の<dependencies>
sectiに
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.7.3</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.3</version>
</dependency>
を持っている))
2をやっていますに。アスペクトについては何もありません。
3)私はテストクラスがaspectjによって認識されていることを確信しています。なぜなら、私は結合ポイントがアドバイスされていることが分かります。私は参照してください:
Join point 'method-execution(xyz)' in Type 'blabla'
(AppTestCase.java:124) advised by before advice from
'blabla' (my-aspects jar.jar!AssertionAspect.class(from AssertionAspect.java))
アフターアドバイスのために同じです。
4)1.6.11ではなくバージョン1.7.3を試したとき、このメッセージは私には現れましたが、結合点は処理されました:expected 1.6.11 found 1.7.3
。私はそれがバージョン1.4のaspectj-maven-plugin
からのメッセージだと思いますが、1.5がいつこれを取り除くためにリリースされるのかは本当に分かりません。互換性のあるバージョンは何ですか?
5)私の "コード" はこの:)
@RunWith(JUnit4.class)
public class TestClass() {
@Test
public void test01(){
}
}
6のように見える)私は1.6.0_39 OracleのJavaコンパイラを持って、私は
)1.6(ターゲット、ソース...すべてですべてをコンパイルしていますので、認識の側面は、適用され、私はmvn clean test
のようなテストを実行するつもりですが、私が得るすべては、それは次のとおりです。
java.lang.NoSuchMethodError:
my/aspect/AssertionAspect.aspectOf()Lmy/aspect/AssertionAspect;
とかなり長いスタックトレース。
私はを持っていません。手がかりが本当に間違っている可能性があります。
はjavaのために働いています8も? –