2016-09-20 3 views
0

私のユニットテストが実際に必要なものすべてを実際にテストするかどうかをテストします。特に私が特定のアサーションを欠場していないかどうかを確認する方法は?例えばユニットテストは、目的に応じてコードを破ることで確認してください。

テイクこのコード:

int AddPositives(int a, int b) 
{ 
    if (a > 0 && b > 0) 
     return a + b; 
    return -1; 
} 

そして誰かがそのようにユニットテストを書いた:

[Test] 
    public void TestAddPositives() 
    { 
     Assert.AreEqual(3, AddPositives(1, 2)); 

     AddPositives(0, 1); 
    } 

明らかにアサートが、ここで逃した

、あなたはコードレビューでキャッチすることがあります。しかし、どのようにこれを自動的にキャッチしますか?

だから、アサート行方不明に検出する目的でテストコードを破るものがありますか?ユニットテストが失敗することなく、バイトコードを調べて定数を変更したり、コードを削除して変更できるかどうかをチェックするもの。このようNCrunch(無料優秀ではない)として

+0

ない(例えばa = 0のとき何が起こるかを確認するなど)境界条件をテストするために失敗したことを教えてくれないでしょう。コードを確認してから、テストするすべてのユースケースを生成する必要があります。 – Nkosi

+1

コードカバレッジは、コード内の単体テストの対象ではないスポットに役立ちます。ただし、生成するレポートを確認する必要があります。繰り返しますが、これらのツールはレビュープロセスにのみ役立ちます。私が知る限り、そこには自動プロセスはありません。 – Alp

答えて

0

いくつかのコード・カバレッジ・ツールは、テストがそれらをヒットするかどうかを示すために、あなたのコードの行に注釈を付けます。あなたが隣NCrunchは小さな黒い点を示すだろう与えた例では

「-1を返します。」ライン。これは、既存のテストがそのコード行を通過しないため、テストされていないことを示します。

これは完璧ではありませんが、-1を返すと主張することなくその行のコードにヒットするテストを書くことができるので、完全ではありません。意味のあるテスト。だから、そのリターンを伝えることができます-1間違いなくユニット・テストではありませんが、それはあなたが自動的に

関連する問題