它看起來像上面提到的註釋在部署內部執行。我需要他們在外面跑,讓我們說開始啓動一些模擬器類,並在結束時停止它。我該怎麼做?模擬器使用套接字通信,它不應該在服務器內啓動。Arquillian和@BeforeClass,@AfterClass註釋
如何將arquillian與「普通」junit混合(不在容器中執行)。
它看起來像上面提到的註釋在部署內部執行。我需要他們在外面跑,讓我們說開始啓動一些模擬器類,並在結束時停止它。我該怎麼做?模擬器使用套接字通信,它不應該在服務器內啓動。Arquillian和@BeforeClass,@AfterClass註釋
如何將arquillian與「普通」junit混合(不在容器中執行)。
可以使用的Arquillian @RunAsClient註解與JUnit的@BeforeClass和@AfterClass組合:
@BeforeClass
@RunAsClient // runs as client
public static void shouldBeAbleToRunOnClientSideBeforeRemoteTest() throws Exception {
System.out.println("before!!");
}
@AfterClass
@RunAsClient // runs as client
public static void shouldBeAbleToRunOnClientSideAfterRemoteTest() throws Exception {
System.out.println("after!!");
}
是弗蘭克給出了肯定會工作,並很可能會是大多數用戶將要使用的答案。但是,如果您需要了解更多關於發生了什麼的更多細節,或者需要更多的控制權,那麼您肯定可以進入Arquillian生命週期並向Arquillian發出的各種events註冊觀察員。不幸的是,這並不像聽CDI活動那麼簡單。
您需要在文件名爲org.jboss.arquillian.core.spi.LoadableExtension
的META-INF/services中創建一個服務條目。該文件的內容將是實現Arquillian的接口LoadableExtension
的類的完全限定名(FQN)。然後您可以在register(ExtensionBuilder)
方法中註冊任何將觀察事件的類。這些課程只需要一個public void methodName(@Observes EventType)
方法來處理他們想要聽的所有事件。 @Observes
註釋位於org.jboss.arquillian.core.api.annotation
包中。
您可以在Arquillian Recorder Reporter擴展here,here和here中看到此效果。我知道這可能比大多數人想要做的更多,但是,如果你需要權力和掛鉤,Arquillian應該能夠給你你需要的東西。
只是爲了澄清我想達到的目標。我有耳部署,增強了一些測試,測試執行一些耳內功能。但我需要啓動一個模擬器,它將通過耳朵部署進行聯繫。通常這個@BeforeClass可以工作,但這裏是在耳朵內部執行的,這迫使我將模擬器類打包在耳朵裏。 – Zveratko