問題タブ [pitest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven-3 - SonarPitestプラグイン
いくつかのミューテーションテストを統合して、junitテストの品質を確認したいと思います。プロジェクトのソナーダッシュボードに結果を表示したいと思います。
sonar pitestプラグインは私が望むことを実行しているようですが、Maven 3にはいくつかの問題があり、まだ開発中です。
誰かがこのプラグインを試したことがありますか?他に選択肢はありますか?
java - Android: Robolectric で PIT Mutation Testing を実行するには?
Android アプリケーションをテストするためにRobolectric と PITを使用する方法は?
Robolectric を使用すると、JVM で Android テストを実行できます。PIT を使用すると、ライン カバレッジを表示し、突然変異テストを実行できます。私にとっては、Eclipse + Plugins を使用しても問題ありませんが、要件はありません。
これは私がこれまでに試したことです:
私は Android プロジェクトを持っています。これをMyProjectと呼びましょう。
Robolectric と PITを使用して、JVM で MyProject をテストしたいと考えています。したがって、MyTestという別のプロジェクトを作成し、 robolectric クイック スタートで説明したように、Robolectric テストを正常に実行することができました。これはmy.app.tests.MyActivityTest
次のようになります。
ここで注意が必要なのは、PIT の Line Coverage と Mutation Testing を Robolectric テストに追加したいということです。最初にPitclipseを使用しようとしましたが、うまくいきませんでした。Pitclipse はまだ Eclipse プロジェクトの依存関係をサポートしていないようです。
したがって、PIT クイック スタートで説明されているように、2 回目の試みはコマンド ラインを使用することです。
まず、コマンド ラインから Junit を使用して、テストが正常に実行されることを確認しました。
には<classpath>
、junit4、robolectric、MyProject クラス ファイル、MyTest クラス ファイル、android.jar、およびその他の必要な Android ライブラリが含まれています。
この JUnit テストが成功し<classpath>
たら、PIT 呼び出しで同じものを使用し、その呼び出しを MyProject のルート パスで実行します。
ただし、これにより、以下に投稿した例外が発生します。PIT のパラメーターを使用していくつかのクラスを除外する必要があると思います--excludedClasses
が、どのクラスが問題を引き起こす可能性があるかについてのヒントはありません。MyActivityTest
スーパークラスも明示的なコンストラクターもないことに注意してください。
spring-test - SpringJUnitRunner ベースのテストが PIT で失敗する
コントローラーとフィルターをテストするために SpringJUnitRunner を利用するプロジェクトがあります。テストを正常に実行すると、すべて正常に実行されます。ただし、PIT でテストを実行すると、SpringJUnitRunner を使用するすべてのテストで次の例外が発生します。
これらの同じテストのコード カバレッジに Emma を使用しても問題が発生したため、Jacoco に切り替える必要があったことに注意してください。
SpringJUnitRunner と PIT の間に既知の非互換性はありますか、またはこれら 2 つがうまく連携できるようにするために行うことができる何らかの構成変更はありますか?
助けてくれてありがとう。
android - PIT の実行時に指定された依存関係をクラスパスから除外する
Android プロジェクトで PIT (pitest.org) プラグインを使用したいと考えています。私は Android Maven プラグインを使用しており、かなり標準的な POM を使用しています。Android JAR は提供されたスコープで Maven に含まれており、SDK からスタブ化された JAR ではなく、実際のソースが含まれています。
Maven プラグインを介してコマンド ラインから PIT を実行すると失敗します。
Google グループに関する以前の議論では、JUnit の古いバージョンを含めるとこのようなエラーが発生する可能性があることが示唆されていました。Android JAR には 3.x JUnit ライブラリの 1 つが含まれているようです (Android チームに感謝します...)。この予感を確認または否定するために、PIT のクラスパスから Android JAR を除外したいと思います。とにかく、Surefire のテスト フェーズですでに除外しているためですが、そうするオプションはありません。
依存関係のスコープを変更せずに、提供された依存関係を PIT から除外する方法はありますか?
java - コマンドラインから Pitest を実行する
Pitest のドキュメントによると、これは単純なはずですが、問題が発生しています。持てるはず
しかし、「<your classpath>」など、私のプロジェクトにとってこれらのいくつかがどうあるべきかわかりません。
私のプロジェクトのファイル構造は次のようになります。
最終的には、これを .bat ファイルに入れて、CI の TeamCity で実行したいと考えています。
どんな助けでも大歓迎です!
java - 自動注入されたフィールドを持つメソッドを使用する必要がある場合に、ミューテーションが強制終了されない
私は次のものを持っています:
そして次のテスト:
予想通り、テストはパスします。PITで実行すると、次の結果が得られます
クラス コードの 33 行目が強調表示されています。
調べた検査は以下の通りです。
my.package.UnsetPropertyTest.testCallsSetPropertyWithCorrectParameters(my.package.UnsetPropertyTest)
(32ミリ秒)my.package.UnsetPropertyTest.testUnsetThrowsForIncorrectNumberOfParameters(my.package.UnsetPropertyTest)
(3 ミリ秒)
今:
- テスト呼び出しパラメーター (
args
) を変更すると、テストが失敗します。予想通り - アサーション (
verify(setProperty).setProperty(...)
) 引数を変更すると、テストが失敗します。予想通り。 - 最初のコード ブロックで強調表示されている関数呼び出しを手動でコメント アウトすると、テストが失敗します。
なぜ突然変異は生き残るのですか?
Java 8、Mockito 1.9.5、および PIT 1.1.4 を使用しています。
java - JUnit テストはパスするが、PIT はスイートがグリーンではないと言う
PIT ミューテーション テストを実行しようとすると、次のエラーが表示されます。
MutationCoverage が失敗しました: ライン カバレッジを計算するときに、すべてのテストが突然変異なしではパスしませんでした。ミューテーション テストにはグリーン スイートが必要です。
通常のテスト ビルドを実行するとテストは正常に実行されますが、ミューテーション テスト フェーズを実行すると失敗する可能性がありますが、その理由についての詳細は提供されていません。PIT テストの FAQに記載されている理由を確認しましたが、何が問題なのかまだわかりません。
私は試した:
- -Dthreads=1 オプションを追加して、マルチスレッドの問題を解決する
- 失敗しているいくつかのテストに固有のシステム プロパティを見つけることができませんでした
- テストは通常の実行では無視されません
他に試してみるべきことは何ですか?または、ここで何が起こっているのかをデバッグする他の方法はありますか?