2015-09-01 65 views
0

它看起來像上面提到的註釋在部署內部執行。我需要他們在外面跑,讓我們說開始啓動一些模擬器類,並在結束時停止它。我該怎麼做?模擬器使用套接字通信,它不應該在服務器內啓動。Arquillian和@BeforeClass,@AfterClass註釋

如何將arquillian與「普通」junit混合(不在容器中執行)。

+0

只是爲了澄清我想達到的目標。我有耳部署,增強了一些測試,測試執行一些耳內功能。但我需要啓動一個模擬器,它將通過耳朵部署進行聯繫。通常這個@BeforeClass可以工作,但這裏是在耳朵內部執行的,這迫使我將模擬器類打包在耳朵裏。 – Zveratko

回答

2

可以使用的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!!"); 
} 
+0

很高興知道 – Zveratko

+0

我在模擬器中重用了一些服務器代碼。有一些我需要用PowerMock覆蓋的靜態類,但是使用@Rule PowerMockRule並不是很有幫助,因爲測試期望這些類在服務器上。我需要改變靜態類只有「在客戶端」這是不可能的? – Zveratko

1

是弗蘭克給出了肯定會工作,並很可能會是大多數用戶將要使用的答案。但是,如果您需要了解更多關於發生了什麼的更多細節,或者需要更多的控制權,那麼您肯定可以進入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,herehere中看到此效果。我知道這可能比大多數人想要做的更多,但是,如果你需要權力和掛鉤,Arquillian應該能夠給你你需要的東西。

相關問題