2016-10-19 23 views
1

私は1点で立ち往生し、提案が必要です。突然変異殺害

私のコードのためにjunitを書いている間、私はValidateArgument.notNull(arg1)突然変異を殺すことができません!
提案が必要です。

コードは次のよう..生き残っ/ノキア/ OSS /コンフィギュレータ/ RAC /共通/ utilに/ ValidateArgument :: notNullを →

##取り外したコールコム に取得

public class A{ 

    public void method1(Object B){ 

      ValidateArgument.notNull(B); 
      .. 
      .. 
      .. 
    } 
} 

返品の種類はvoidこの突然変異を殺す可能性のある方法は何ですか?

+1

ヒント:varelableの名前はcamelCaseになります。たとえ文字が1つの文字で、コード例が;-) – GhostCat

+0

私の答えにあなたのコメントが与えられれば、もっと複雑になります。だから、最初にやってみたいこと:ヘルプセンターに "尋ねる方法"を読んでください。あなたは、何かが働いていないとあなたに伝えています。しかし、あなたは関連する詳細を教えていません。どのようなツールを使用しているのか、どのバージョンを使用しているのか、簡単に言えば、われわれが助けてくれるようにするには、あなたの質問に最小限で完全で実用的な例を提供する必要があります。 。つまり、あなたの質問には答えられません**。 – GhostCat

+0

そしてヒントとして:*他の*コードを殺すことができます。多分あなたはそこに違いを見なければならないかもしれません。 – GhostCat

答えて

0

ValidateArgument.notNull(B);の目的は何ですか?

私はあなたのテストから、nullが渡されたときにNullPointerExceptionをスローすることがわかっています。

もしそうであれば、そのコード行は無駄なので削除しなければなりません。method1を呼び出すと、引き続きNullPointerExceptionが発生します。つまり、テストで指定した動作は同じです。

またはValidateArgument.notNullあなたにとって重要なことは他にもありますか?役に立つと思われる例外メッセージが生成されるのでしょうか?もしそうなら、メッセージが存在することを確認するテストを書く必要があります。

しかし、多くのプログラマは、このようなアサーションの動作を指定するテストを書いていません(これは意味があるかどうかは、作業中のコンテキスト/ドメインによって異なります)。

Pitestには、通常は単体テストされていない懸念事項(他の一般的なものがログに記録される)に突然変異を作成することを避ける機能があります。

avoidCallsTo設定パラメータにfull.package.name.ValidateArgumentを追加すると、この突然変異は生成されなくなります。

+0

ご意見ありがとうございます。私はValidateArgument.notNull(B)を使用しています。私のコードが不要に実行されるのを避けるためです。 コードを実行して、私に与える行を待つのではなく、誰かがnullで自分のメソッドを呼び出すのであれば、私のコードは単に開始時に例外を与え、処理時間を節約します。 これが私がこれを使った理由はこれだけです。 – CryoMancer

1

ここを推測:あなたはBのためヌルでメソッドを呼び出すテストを持っているのですか?

Bがnullの場合、検証メソッドは例外をスローする必要があります。 nullでメソッドをテストすることは決してありませんが、その行が実際に実行されるかどうかに違いはありません!

+0

はい私はヌルでメソッドを呼び出すテストを持っています。 私のテストケースは次のとおりです。 - – CryoMancer

+0

@Test(expected = NullPointerException.class) public void testForvalidation(){ testObject.method1(null); } まだ突然変異を殺すことはできません。 – CryoMancer

+2

ValidateArgument.notNull(B)をコメントアウトするとテストに失敗します。ライン? – henry

関連する問題