2016-08-10 13 views
0

私はJUnitの初心者です。私はSonarQubeレポートにJUnitを固定しており、コード範囲もJunitに増えています。私はclassのどこにも行きませんでした。@Testannotationがありません。スローされた例外は以下の通りである:以下JUnit:実行可能メソッドがありません

No runnable methods java.lang.Exception: No runnable methods at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 

Testクラス:

public class TestLimitPrice { 

@BeforeClass 
public static void setUpBeforeClass() { 

    JndiDataManager.init(); 
} 

private LimitPriceBean  limitPrice; 
private LimitPriceValidator validator; 

@Before 
public void setUp() { 

    limitPrice = new LimitPriceBean(); 
    validator = new LimitPriceValidator(limitPrice); 
}} 

私の質問のとおりです。すべてのJUnitが通過する少なくとも1つの@Testを持っているためSonar Report

  • は、それが必要です?
  • 空になる@Testは、コードカバレッジを向上させる良いアプローチですか?
  • テストケースが実行されていない場合は、assertEquals(true,true)が良い習慣ですか?避けるべきですか?

更新

  • ソナーバージョン4.4.1
  • JUnitのバージョン4.12
  • のJava 1.6から45
+0

どのバージョンのソナー、JUnit、Javaなど?それがなければ行くのが少し難しいです...しかし、バグのように見えます。 – ppeterka

答えて

3

私の質問のは、以下のとおりです。

  • Sonarレポートでは、すべてのJUnitが少なくとも1つの@Testを渡す必要がありますか?

質問がわかりません。

  • @Testを空にするコード カバレッジを向上させるための良い方法ですか?

いいえ、2つの理由からです。

最初に@Testメソッドが空の場合、カバレッジを上げる可能性はありません。だから@Testメソッドを持っていると仮定しましょう。はプログラムコードの一部を実行しますが、アサーションは含まれていません。

このシナリオでは、@Testのプログラムコードを実行してテストカバレッジを向上させましたが、そのコードの予想される結果/出力についてのステートメント(アサーション)を行わないことでテストの目的を完全に覆しました。のは、私が今addTwoAndTwoは私がいる限りユニットテストなどという自信を持って、それを維持することができるようになってる「カバー」されていることを

public int addTwoAndTwo() { 
    return 2+2; 
} 

と、対応するテスト

@Test public void testAddTwoAndTwo() { 
    MyClass mc = new MyClass(); 
    my.addTwoAndTwo(); // this method now "covered" 
} 

を持っているとしましょう私は何も壊していません。

だからそうしよう。私の新しいバージョンは次のとおりです:

public int addTwoAndTwo() { 
    return 42; 
} 

この変更の後も、私の単体テストは成功していますので、すべてが大丈夫でしょうか? Uhm ...いいえ。そして、それはあなたがアサーション必要がある理由です:任意のテストケースが実行されていない場合場合

@Test public void testAddTwoAndTwo() { 
    MyClass mc = new MyClass(); 
    assertThat(mc.addTwoAndTwo()).isEqualTo(4); // this method now truly covered 
} 
  • を、そして のassertEquals(真、真)は良い習慣ですか避けるべき?

この質問への答えは、今では明らかにする必要がありますが、明示的であるために、これをしません。

+0

最初の質問は、「すべてのJunitは、「ソナー」レポートを作成する際に、少なくとも1つの「テストケース」を持つ必要がありますか?私はそうしなければならないと思う。 – Amolb

関連する問題