質問

デフォルトでは、あなたが完全な操作を行うため、

突然変異検査するに直面する一つの問題は、それが遅いということです生成された各変異のためのテストラン(テストファイル、またはテストファイルのスイートのいずれか)。

速く突然変異検査を行うための一つの方法は、単一の障害が発生してきた後に与えられた変異体のためのテストの実行を停止するようになります(ただし、唯一の突然変異試験中)。さらに良いことに、最後の変異体を殺すために最初のテストだったか覚えていて、次の変異体にその最初を与える突然変異テスターのためになります。猿のパッチ適用を開始するために私の最善の策をこれらのもののいずれかを行い、またはあるルビーに何がありますか。

(はい、私はユニットテストは、高速であるべき知っている。そして、それはあなたが単に何かが間違っていることを確認、それは間違って起こっているピンポイントではないのに役立ちますよう失敗したテストのすべてを示すことは、突然変異検査の外に有用である)

編集:私は現在、テスト/ユニットで野次るを使用しています。それはテストのために不可能な場合、ランニングの間で失敗したテスト/ユニットは、覚えておくべきかもしれない野次るか何か走行野次るがそれを覚えている可能性があります。

役に立ちましたか?

解決

あなたの最高の最高は、それをパッチし、githubのから野次るソースをチェックアウトすることです、および開発者にそのパッチを提出します。あなたが野次るのカスタムテストランナーを書くことができるようにするべきである。

猿のパッチは、このような何かのための答えになることはありません。実際には、猿のパッチは何のためにほとんどない答えです。

他のヒント

私の変異のツールは失敗例が発生した後、直ちに停止するrspec2の--fail-fastオプションを使用しています。一緒にのみ影響を受けたユニットテストを実行--rspec-dm2戦略に我々は非常に高速な突然変異のカバレッジテストを取得します。 (スピード)のデモンストレーションのために、この asciicast のを参照してください。

私は、各メソッドのユニットテストを書いて、rubyspecsのように構成別々のファイルにそれらを入れていた使用を開始しました一つのアプローチ。私は野次るする正確な方法を指定して、孤立して各スペックを実行します。もしあれば、私は、このすべてを管理し、障害の変異と終わりにレポートを印刷しrakeタスクを持っています。

最後に、私は結果を永遠に待つことなく、各メソッドの完全な野次るカバレッジを取得します。プラス、それは私がすべての偶発的カバレッジを得ることはありませんので、誰もが使用する通常のアプローチよりも良いです - 。各メソッドの仕様は、その方法の全ての変異をカバーしなければならない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top