竹失败测试无法解析junit

Posted

技术标签:

【中文标题】竹失败测试无法解析junit【英文标题】:Bamboo failing test can't parse junit 【发布时间】:2014-07-09 15:36:18 【问题描述】:

我使用竹子作为我的 django 项目的 CI 服务器,为了一个好的开始,我制作了一个简单的脚本来了解竹子如何显示成功和失败的测试。 我像这样使用 py.test :

py.test test.py --junitxml=junitresults/results.xml

我的 test.py 文件包含这样的内容:

def test_that_fails():
    assert 1 == 2

所以它应该失败,竹子应该告诉我名为“test_that_fails”的测试实际上失败了。相反,它显示未找到失败的测试,可能发生了编译错误。在 Bamboo 的“测试”选项卡上,我可以看到 此版本中没有失败的测试

这是 py.test 生成的 jUnit XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<testsuite errors="0" failures="1" name="pytest" skips="0" tests="12" time="1.317">
    <testcase classname="test" name="test_that_fails" time="0.000378847122192">
        <failure message="test failure">def test_that_fails():
        # fail pour tester bamboo
&gt;       assert 1 == 2
E       assert 1 == 2

test.py:7: AssertionError</failure>
    </testcase>
    <testcase classname="test" name="test_engage_front" time="0.149123907089"/>
    <testcase classname="test" name="test_engage_front_ffm" time="0.444163799286"/>
    <testcase classname="test" name="test_engage_manage" time="0.15494799614"/>
    <testcase classname="test" name="test_engage_organisateur" time="0.1144759655"/>
    <testcase classname="test" name="test_engage_admin" time="0.122771978378"/>
    <testcase classname="test" name="test_engage_adminffm" time="0.0980911254883"/>
    <testcase classname="test" name="test_engage_motoball" time="0.0341689586639"/>
    <testcase classname="test" name="test_engage_api" time="0.0104990005493"/>
    <testcase classname="test" name="test_jira" time="0.0974311828613"/>
    <testcase classname="test" name="test_monitoring" time="0.00897479057312"/>
    <testcase classname="test" name="test_static" time="0.00422883033752"/>
</testsuite>

如果构建成功,竹子会告诉我所有测试的细节,持续时间...... 我已经在 Bamboo 文档、Bamboo 跟踪器上搜索了所有可能的资源,在这里,看不到任何有这个问题的人。

如果你有什么想法,请分享!谢谢。

【问题讨论】:

【参考方案1】:

只是为了分享我的发现。 我忽略的一件事是,如果任务链失败,Bamboo 会停止任务链。 因此,如果 python manage.py test 由于测试用例中的错误而失败,竹子会停止并且不会解析 junit 结果。

解决方案是将 junit 解析器作为任务放在最后的“最终任务”部分下。

它现在就像一个魅力。

【讨论】:

所以,我列出了我的任务,我的 junit 解析器排在最后,但我遇到了同样的问题。我的清单是 - Command -> Checkout -> Command (实际构建,当它失败时,我相信它不会继续到 JUnit 解析器)。当它工作时,你的设置是这样的吗?谢谢! 所以,martync 是对的。但我没有将它放在“最终任务”下,而是放在正常任务的末尾【参考方案2】:

可能与这个竹子问题有关,没有找到测试结果,但它给出了您所看到的错误

https://jira.atlassian.com/browse/BAM-2165

我遇到了类似的问题,通过将 junit 任务中的“指定自定义结果目录”框修改为更广泛的搜索模式,它开始为我工作。

我用过**/test-results.xml

【讨论】:

以上是关于竹失败测试无法解析junit的主要内容,如果未能解决你的问题,请参考以下文章

ID 为“junit-vintage”的 TestEngine 未能发现测试 - JUnitException:无法解析 junit 的版本:junit:4.13.2

如何使用 Gson 解析验证我的 Junit 测试

Cucumber 无法解析为类型

为啥 JUnit 的 assertTrue 没有得到解决?

在 JUnit5 中使用 Testcontainers 和 gradle 时无法解析 'DockerImageName' 中的方法 'parse'

错误:(23、17)无法解决:junit:junit:4.12