gpt4 book ai didi

java - 如果 JUnit 测试当前在套件中运行,如何让它们知道

转载 作者:行者123 更新时间:2023-12-01 14:34:44 25 4
gpt4 key购买 nike

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

有办法吗?

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

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

最佳答案

  1. 让你所有的测试类扩展一些 AbstractServerTest
  2. 在其中添加@BeforeClass 方法来检查服务器是否已经在运行,如果没有则启动它。
    • 请记住,@BeforeClass 将被每个子类调用,因此 if 语句是必要的。
  3. 当最后一个测试完成时,JVM 将关闭,因此只要您的服务器在同一个 JVM 中运行(而不是作为单独的进程),您就不需要进行任何清理。
    • 如果您的服务器作为一个单独的进程运行,您可以在您的@BeforeClass 方法中添加一个shutdownHook,它会在JVM 关闭时执行一些命令来停止服务器下来。

关于java - 如果 JUnit 测试当前在套件中运行,如何让它们知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38914539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com