看起来提到的注释是在部署中执行的。我需要它们在外面运行,让我们说在启动时启动一些模拟器类并在结束时停止它。我该怎么做?模拟器使用套接字通信,不应在服务器内启动。
如何将arquillian与#34; plain"混合junit(未在容器中执行)。
答案 0 :(得分:4)
你可以使用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!!");
}
答案 1 :(得分:1)
Franck给出的答案肯定会奏效,并且可能是大多数用户想要使用的答案。但是,如果您需要获得有关正在发生的事情的更多详细信息,或者需要更多控制,那么您当然可以进入Arquillian生命周期并为Arquillian发出的各种events注册观察者。不幸的是,它并不像听CDI事件那么容易。
您需要在META-INF / services中创建一个文件名为org.jboss.arquillian.core.spi.LoadableExtension
的服务条目。该文件的内容将是实现Arquillian的LoadableExtension
接口的类的完全限定名称(FQN)。然后,您可以在register(ExtensionBuilder)
方法中注册任何将观察事件的类。对于他们想要监听的所有事件,这些类只需要一个public void methodName(@Observes EventType)
方法。 @Observes
注释位于org.jboss.arquillian.core.api.annotation
包中。
您可以在Arquillian Recorder Reporter扩展程序here,here和here中查看此操作。我知道这可能比大多数人想做的更多,但同样,如果你需要力量和钩子,Arquillian应该能够满足你的需求。