Arquillian和@BeforeClass,@ AfterClass注释

时间:2015-09-01 12:21:03

标签: testing annotations jboss-arquillian

看起来提到的注释是在部署中执行的。我需要它们在外面运行,让我们说在启动时启动一些模拟器类并在结束时停止它。我该怎么做?模拟器使用套接字通信,不应在服务器内启动。

如何将arquillian与#34; plain"混合junit(未在容器中执行)。

2 个答案:

答案 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扩展程序hereherehere中查看此操作。我知道这可能比大多数人想做的更多,但同样,如果你需要力量和钩子,Arquillian应该能够满足你的需求。