37

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 コメントを書くことができます。

ありがとうございました。

4

6 に答える 6

47

JUnit 5 には@DisplayNameアノテーションがあります。

@DisplayName は、注釈付きのテスト クラスまたはテスト メソッドのカスタム表示名を宣言するために使用されます。表示名は通常、IDE およびビルド ツールでのテスト レポートに使用され、スペース、特殊文字、さらには絵文字を含む場合があります。

例:

@Test
@DisplayName("Test if true holds")
public void checkTrue() {
    assertEquals(true, true);
}
于 2016-12-21T19:06:42.687 に答える
19

TestNG は次のように行います。これは私にとって最も適切なソリューションです。

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

詳細については、 http://testng.org/javadocs/org/testng/annotations/Test.htmlを参照してください。

于 2013-07-05T12:08:36.820 に答える
14

探しているものとは正確には異なりますが、任意のassertメソッドについて説明を提供できます。

何かのようなもの:

@Test
public void testTrue() {
    assertTrue("Testing if true holds", true);
}
于 2012-10-31T13:41:04.657 に答える
6

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(){}
于 2016-09-20T09:01:11.727 に答える
2

テストの後にテストメソッドに名前を付けることができます:

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

これは、Eclipse、Surefire、および他のほとんどのランナーに表示されます。

于 2012-10-31T14:29:54.603 に答える
1

詳細な解決策は次のとおりですLogger。テストにを追加して、結果をファイルに記録できます。たとえば、log4jを参照してください。次に、ファイル内の結果を読み取り、assertstatemensができない成功したステートメントを印刷することもできます。

簡単な解決策:すべてのテストメソッドに説明を追加でき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");テストがどのように実行されるかわからないため、使用しないでください。環境にコンソールが提供されていない場合、メッセージは表示されません。

于 2012-10-31T13:45:30.897 に答える