gpt4 book ai didi

junit - 从命令行生成 JUnit 报告

转载 作者:行者123 更新时间:2023-12-03 13:32:33 25 4
gpt4 key购买 nike

我有一个云系统的测试设置,它混合使用 python 进行进程级别控制和 junit 进行内部状态检查。本质上,我将几个虚拟机作为云服务器提供给服务器,然后是一个 junit 虚拟机,它是云的成员,但驱动测试和检查内部状态。我们现有的云管理东西是由 python 驱动的,我想维护它。

我有一个工作设置,将通过运行 JUnit 命令行

java -ea -cp <classpath> org.junit.runner.JUnitCore <tests>

但这不会产生报告文件。我知道 ant 能够生成 xml 报告,但我不想让 ant 参与这个过程(我已经有足够的事件部件了)。

有没有办法从命令行启动 junit 以生成报告?

理想情况下,我会让 junit 测试生成 xml 报告,python 测试生成 xml 报告,然后将它们合并在一起以供我们的 CI 系统使用。

更新:命令行执行必须支持 Windows、Linux 和 Mac。我们不允许运送外部 Ant ,尽管包装内部 Ant 可能是一种选择。

最佳答案

JUnit 库没有任何 XML 输出选项。要实现这样的事情,您需要编写自己的 RunListener ,它监听输出,并在您的情况下编写 XML 文件。

但是,要以正确的格式获取 XML 文件以便 CI 系统可以读取它,我认为使用 ant 会容易得多,或者通过命令行使用 build.xml ( JUnitReport ),或者使用 java api: How can i use Apache ANT Programmatically .

编辑:最初,我们有四个选择:

  • 从命令行使用 ant
  • 以编程方式使用 ant(使用 Java API)
  • 直接将 XMLJUnitResultFormatter 与 JUnitCore 一起使用
  • 创建一个生成正确 XML 输出的自定义 RunListener。

  • 鉴于 OP 添加的限制,我们不能从命令行使用 ant,这消除了 1。

    再仔细看了下Ant JUnit任务,好像不能用这个和JUnitCore(加个TestListener)一起使用,因为ant直接用了测试类的名字,所以不能做桥接类。来自 XMLJUnitResultFormatter.java
    private void formatError(String type, Test test, Throwable t) {
    ...
    nested.setAttribute(ATTR_TYPE, t.getClass().getName());

    String strace = JUnitTestRunner.getFilteredTrace(t);
    Text trace = doc.createTextNode(strace);
    nested.appendChild(trace);
    }

    这消除了3。

    通过 Java API 以编程方式调用 Ant。我找不到任何关于此的最新文档。这似乎很难。

    因此,最后,我将使用 XMLJUnitResultFormatter 中的代码作为基础来执行 4 自定义 RunListener。然后,我会在 github.com 上发布它,所以这个问题可以得到正确的回答:-)

    关于junit - 从命令行生成 JUnit 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445582/

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