JUnit报告 - 测试方法描述

时间:2009-04-21 23:22:35

标签: junit report

我试图看看是否有办法通过javadocs在我的junit报告中包含“描述性文本”。 JUnit 4似乎不像TestNG那样支持@Test注释的'description'属性。

到目前为止,我所研究的只有一个名为javadoc-junit(http://javadoc-junit.sourceforge.net/)的工具。但是我无法使用它,因为它似乎与Junit 4不兼容。

我想要的是在JUnit报告中用我的每个测试方法提供一个或两个文本的方法。 JavaDoc并不好,因为目标受众必须在JavaDoc和Junit Report之间切换,以查看文档和/或测试统计信息。

任何人都知道我能以最小的努力使用其他任何东西吗?

最佳, Ray J

4 个答案:

答案 0 :(得分:8)

还有一个名为 Allure 的最新解决方案。这是一个基于Java的测试执行报告,主要基于向代码添加补充注释。现有注释包括:

  • 自定义说明: @Description(“酷测试”)
  • 按功能或故事分组: @Features({“feature1”,“feature2”}) @Stories({“story1”,“story2”})
  • 在测试用例中执行的标记方法为步骤: @Step (即使对私有方法也适用)
  • 附件: @Attachment(name =“Page screenshot”,type =“image / png”)

有关详细信息,请参阅 wiki example project

答案 1 :(得分:8)

JUnit 5中,有一种方法可以使用@DisplayName为每个测试添加注释。声明的测试类可以包含textspecial charactersemojis

test runnerstest reports可以看到每个测试的声明文字。

Javadoc说:

public @interface DisplayName

  

@DisplayName用于为带注释的测试类或测试方法声明自定义显示名称。   显示名称通常用于IDE和构建工具中的测试报告,可能包含空格,特殊字符甚至表情符号。

User Guide

import org.junit.gen5.api.DisplayName;
import org.junit.gen5.api.Test;

@DisplayName("A special test case")
class DisplayNameDemo {

    @Test
    @DisplayName("Custom test name containing spaces")
    void testWithDisplayNameContainingSpaces() {
    }

    @Test
    @DisplayName("╯°□°)╯")
    void testWithDisplayNameContainingSpecialCharacters() {
    }

    @Test
    @DisplayName("")
    void testWithDisplayNameContainingEmoji() {
    }
}

答案 2 :(得分:6)

我没有将javadoc放在JUnit测试中。我通常会将方法的名称描述得足够好,所以它与我能提出的任何评论一样好或更好。

答案 3 :(得分:-1)

我可以想象,Framework for Integrated Tests (FIT)将是一个很好的清洁解决方案。

FIT做什么?
FIT是一个允许通过Word文档,wiki表或html表中的表编写测试的框架 FIT会忽略表格外的每个字符,并允许您输入文档,说明,要求等。

这些表格如何?

想象一个函数MyMath.square(int),它将它的输入参数平方。您必须构建一个所谓的Fixture,它是MyMath和下表之间的适配器:

class.with.Fixture.Square
x    square()
2    4
5    25

第一列描述输入值,第二列描述预期结果。如果它不相等,则该字段标记为红色。

灯具怎么样?
对于给定的示例,这将是正确的夹具:

package class.with.Fixture // Must be the same as in the fist row of the table

public class Square extends Fixture {
    public int x; // Must be the same as in the second row
    public int square() { // Must be the same as in the second row
        return MyMath.square(x);
    }
}

您可以根据自己的要求使用FIT 请随意评论我的回答或编辑您的问题以获取更多信息!