JUnit测试说明

时间:2012-10-31 13:38:19

标签: java testing junit

在JUnit中是否可以为将来的读者添加测试的简要描述(例如,正在测试的内容,一些简短的解释,预期的结果......)?我的意思是像ScalaTest,我可以写的地方:

test("Testing if true holds") {
  assert(true)
}

理想的方法是使用一些注释,例如

@Test
@TestDescription("Testing if true holds")
public void testTrue() {
    assert(true);
}

因此,如果我使用Maven(或某些类似的工具)运行这样的带注释的测试,我可以使用ScalaTest获得与SBT中相似的输出:

- Testing if entity gets saved correctly
- Testing if saving fails when field Name is not specified
- ...

目前我可以使用非常长的方法名称或编写javadoc注释 不存在于构建输出中。

谢谢。

6 个答案:

答案 0 :(得分:19)

在JUnit 5中,有@DisplayName注释:

  

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

示例:

@Test
@DisplayName("Test if true holds")
public void checkTrue() {
    assertEquals(true, true);
}

答案 1 :(得分:15)

TestNG是这样做的,对我来说这是最好的解决方案:

@Test(description="My funky test")  
public void testFunk() {  
    ...  
}  

有关详细信息,请参阅http://testng.org/javadocs/org/testng/annotations/Test.html

答案 2 :(得分:13)

不完全符合您的要求,但您可以提供任何assert方法的说明。

类似的东西:

@Test
public void testTrue() {
    assertTrue("Testing if true holds", true);
}

答案 3 :(得分:5)

我更喜欢在JUnit中测试时遵循标准格式。测试的名称是

test[method name]_[condition]_[outcome]

例如:

 @Test
 public void testCreateObject_nullField_errorMessage(){}

 @Test
 public void testCreateObject_validObject_objectCreated(){}

我认为这种方法在进行TDD时非常有用,因为您可以开始编写所有测试名称,以便了解测试/开发所需的内容。

我还是欢迎来自JUnit的测试描述功能。

这肯定比我过去看过的其他测试更好:

@Test public void testCreateObject1(){}
@Test public void testCreateObject2(){}
@Test public void testCreateObject3(){}

@Test public void testCreateObjectWithNullFirstNameAndSecondNameTooLong(){}

答案 4 :(得分:2)

您可以在测试后命名测试方法:

public void testThatOnePlusOneEqualsTwo() {
  assertEquals(2, 1 + 1);
}

这将出现在Eclipse,Surefire和其他大多数参赛者中。

答案 5 :(得分:0)

详细解决方案将是:您可以在测试中添加Logger,将结果记录到文件中。例如See log4j。然后你可以在文件中读取结果并打印成功的语句,assert状态不能。

简单解决方案:您可以为每个测试方法添加JDoc描述,如果生成JavaDoc,将对此进行概述。

每当assert语句失败时,每个assert语句都可以提供将要打印的消息。

/**
 * test the List#size() increasement after adding an Object to a List.
 */
public void testAdd(){
  List<Object> list = new LinkedList<>(); 
  list.add(new Object());
  assertEquals("size should be 1, because of adding an Object", 1, list.size());
}

请勿使用System.out.println("your message");,因为您不知道如何执行测试,如果环境没有提供控制台,则不会显示您的消息。