gpt4 book ai didi

java - JUnitCore 停止

转载 作者:行者123 更新时间:2023-11-28 20:02:16 25 4
gpt4 key购买 nike

我想停止/销毁一个正在运行的 JUnitCore,它以

开始
JUnitCore.run(Request.aClass(ClassToRun));

比如 RunNotifier 上的 pleaseStop()

有什么想法吗?

http://junit.sourceforge.net/javadoc/org/junit/runner/package-summary.html

最佳答案

选项 1:最好的选择是编写您自己的 Runner 实现,继承自 org.junit.runners.BlockJUnit4ClassRunner 并在您的执行上下文中声明它,例如作为原始类的主类Java 命令行。

从JUnit源码中获取灵感(真的很小众),主要是org.junit.runners.ParentRunner并自行覆盖 runChildren 方法,以便在触发停止命令时有机会退出执行循环。

Runner 的工厂是Request。首先,您调用

   (new JUnitCore()).run(Request.runner(new MyStoppableRunner().aClass(ClassToRun))

选项 2:如果在您的上下文中无法使用您自己的运行器(例如在 Eclipse 中启动),由于在使用的运行器中注册了 RunListener 实现,您可以获得对运行测试用例的线程的引用。

如果触发了停止命令,您的监听器可能会抛出一个RuntimeException 甚至是一个Error,希望它能使原始测试运行器崩溃。

奖金

这两个选项是基本的,因为目的是检查停止条件并且不要继续循环方法或测试类。

如果卡在 sleep 或等待状态,您可能想尝试中断测试线程。为此,应创建看门狗线程以在不活动超时后调用测试线程上的中断

关于java - JUnitCore 停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312021/

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