我想让测试类知道它们当前是否在Suite
内执行。 我有一个测试套件,在所有测试之前启动服务器,并在所有测试后使用ExternalResource
关闭服务器。完美的作品。 在编写新测试时,我想运行一个测试(或者来自同一个测试类的所有测试)来启动和停止服务器。所以我希望这些类能够意识到它们当前是否在套件内部执行,并相应地启动服务器启动。 这似乎是不可能的。套件Description
永远不会传递到@Rule
s或@ClassRule
看来。我也无法获得目前运行当前测试的Runner
的参考信息。如何使JUnit测试知道它们当前是否在套件内运行
有没有办法做到这一点?
更新由于首次提出答案:
请注意,有可能测试套件之前和之后运行许多其他测试。因此我不能依靠JVM关闭。 我的主要需求是在编写测试之后立即在IDE(eclipse)中运行单个测试,并且仍然启动服务器并关闭服务器。尽管套件中的每个测试都不应该发生。
总的来说,我同意这种方法,除了继承,通常的问题适用于此。你可以用'Rule'来完成,并避免完全继承 – tddmonkey
@tddmonkey是否需要将此规则添加到每个类?在这两种情况下,所有测试类都必须改变,但在我看来'扩展AbstractServerTest'比添加注释更加简单,这是其他领域的一个噪音。你也必须记住公开场地,否则将被忽略。继承你不能犯这样的错误。 –
可以工作,但不是在我的情况。有几百个其他的JUnit测试可以在使用服务器的测试之前或之后运行。这意味着在完成最后一次测试后,JVM不一定会关闭。 – sorrymissjackson