2009-08-05 11 views
11

junitを使ってテストしている瞬間にプロジェクトに取り組んでいますが、かなり早い段階でまだ多くの機能が実装されていません。それらまだテストに合格している間、ジュニットスロー警告

これがために書かれたテストは、(明らかに)これらのテストは、常に誰が警告を表示しながらテストに合格するのJUnitを取得する方法を知っていた場合、私は思っていた

失敗を意味します。できればカスタマイズ可能なメッセージを表示して、その機能がまだ実装されていないことに気づくことができます。

この点は、すべてのテストが合格する場合にのみコンパイルするようにコーディングする必要があり、現時点ではこれは単純にできません。

問題テストをコメントアウトしたり削除したりすることは可能ですが、後でそれらを追加することを忘れるリスクがあります。

答えて

4

@Ignoreは、試験方法の前で行うことができます。それはテストランナーにどのような出力が得られるかによって異なります。 25個のテストを正常に実行し、6個のテストが無視されるようなものを得ることができます...

これ以上のことは、単体テストの実行方法によって異なります。

あなたの新しい方法でNotImplementedExceptionをスローする可能性が
+0

これは私のために無視されたテストの表示を生成するようには思われませんが、おかげですべての同じ、確かに何かを念頭に置いて –

+0

これは私が得ることができる最も近いと思われる –

0

Apache Commons NotImplementedException

例えば

public String getName() { 
    throw new NotImplementedException("Oh so soon..."); 
} 

し、それは、この例外がスローされることを期待すべきであることをあなたのJUnitテストで指定します。

@Test (expected=NotImplementedException.class) 
public void testGetName() { 
    myKingdom.getName(); 
} 

その機能を実装するすべての人へのリマインダーとして機能し、もちろん、彼らはそれを追加しません(または間違って削除する)ユニットテストでは、例外がスローされなくなり、大きなぐらつきが発生することがわかります。

+0

これは私です現在はやっているのですが、何もないので何かが正常ではないという兆候なしにテストに喜んで渡されるので、機能がまだ実装されていないという事実を逃すのはかなり簡単です。しかし、とにかく感謝 –

8

私が見たほとんどのJUnitランナーは、テストケースの4つのステータスのうちの1つを渡します:合格、失敗、エラーまたは無視。

エラーが発生した場合(例外が投げられた場合)は、失敗した場合と同様の方法で報告されます(「赤い結果」)。警告を生成してもまだ「緑色の結果」があります。あなたは何を探していますか?ヤヌシュで述べたように

、あなたにもメッセージを含めることができ、テストケースを無視する@Ignore属性を使用することができます。

@Ignore("disabled until implementation is finished") 
public void testMe() { 
    //do something 
} 

ほとんどのランナーは結果で明示的にそれらを表示されませんが、あなたは可能です@Ignore属性を探して、ツールを使用して無視されたテストケースを自動的に検索し、スキップされたすべてのテストケースとその理由(理由で与えられた理由)をリストアップしたレポートを後で生成します。

7

org.junit.Assumeは必要な作業を行いますか?

0

ユニットテストは、テストが完了したとき、つまり何かを行うときや何か失敗したときに最も効果的です。したがって、彼らは「半分失敗する」または「警告に合格する」ようには設計されていない。

これは、単体テストがテストするように設計されているためです。したがって、彼らが失敗するとき、何かが間違っています。

まだ実装されていないものを追跡するためにテストを使用するのではなく、である機能をテストするテストを使用する方が良いでしょうか。です。

現在、機能していない機能をテストしているテストは、その機能が存在するまで実行されていないはずです。

1

私は約2年後ですが、あなたが必要としないテストをコメント/無視し、公開されたコードレビューが送信されたコードとともに単体テストをカバーしていることを確認します。あなたのテスト方法を改善するはずです&全体的なカバレッジ。

+3

2歳のための印象的なアドバイス。 –

+0

@mattburnsここで何を意味しているのかよく分かりませんが、最終的に '@ Ignore'の答えは私よりはるかに優れていました。 – avgvstvs

+1

@avgvstvs私は彼が "私が2年ぐらいのことを知っている"と誤解していると "2歳"と信じています。私も一見したように^^ – PixelMaster

関連する問題