如何让JUnit测试当前在套件

时间:2016-08-12 09:28:06

标签: java junit

我希望测试类知道它们当前是否在Suite内执行。 我有一个测试套件,它在所有测试之前启动服务器,并在所有测试之后使用ExternalResource关闭服务器。工作完美。 在编写新测试时,我希望运行单个测试(或来自同一测试类的所有测试)来启动和停止服务器。所以我希望这些类知道它们当前是否在套件内执行,并相应地启动服务器启动。 这似乎是不可能的。套件Description永远不会传递给@Rule@ClassRule。我也不能获得对当前测试运行的当前Runner的引用。

有办法吗?

由于第一个提议的答案而更新:

请注意,在测试套件之前和之后可能会运行许多其他测试。因此,我无法依赖JVM关闭。 我的主要要求是我想在编写测试后立即从我的IDE(eclipse)中运行单个测试,并且仍然让服务器启动并关闭。但这不应该发生在套件内的每个测试中。

1 个答案:

答案 0 :(得分:0)

我是否可以建议使用端口探测并检查端口是否已绑定在JUnit测试规则(或@Before / @BeforeClass注释方法)中,并且仅在初始化服务时进行初始化端口仍然可用。这样,您可以在外部或套件内启动服务,并在测试中重用它,或者在测试之前初始化它,如果端口仍然可用。这当然需要一个固定的端口分配,它仅用于测试时所需的特定服务。

当您明显执行集成测试时,您可能也会对如何设置MavenGradle以在测试集成阶段自动执行测试感兴趣。