私は、実行されていないテストを探す方法を見つけ出すことができました。実行されたテストにアサーションがないかどうかを知ることができますか?アサーションなしでJUnitとTestNGテストを探すには?
答えて
私は、実行時に、または静的解析を使用して2つの選択肢があると思います。ランタイム
で
あなたは(TestNGのは、同様の抽象化を持っている)のJUnitのRunListenerを使用して、実行時に、あなたのテストにフックすることができますが、アサーションが行われた場合、どのように言うことができますか?単純ではありませんが、Java Agentを使用すると可能です。 Javaエージェントと、バイトコード操作を行うライブラリを使用して、JVMにロードされる「アサーション」メソッドの動作を変更することができます。あなたの変更されたメソッドは、あなたのRunListenersを呼び出さなければならないし、その後彼らの主張を黙っていなければならないでしょう。あなたは "assertion"(junit?testng?hamcrest?など)として数えられるすべてのメソッドをリストすることができる必要があります。ピー!私は過去にこれすべてをやったことがありますが、それはかなり厄介でしたが、うまくいきます。あなたのケースでは
静的解析
、静的解析は、より良い選択であるように思われます。すべての@Testアノテーション(またはTestNGに相当するもの)のクラスパスをスキャンし、どのクラスが "assert"を開始するメソッドを呼び出すかを確認することができます。私はjavaparserを使ってこれに似たようなことをしてきました。
他の答えで説明したように、例外がスローされないという暗黙のアサーションが常に存在することに注意してください。私たちはスイートの中にいくつかの有効で有用なテストを行っていますが、そのために明示的なアサーションはありません。
私はあなたの最善の策は、正規表現の検索や静的解析のようなものだと思います。いずれにしても、テストメソッドを特定し、それらがアサーションを含んでいるかどうかを判断することができなければなりません。assertionはいくつかのassertコール、モック検証、および/または "予期される例外"句です。これらのすべてが何らかの「アサーション」を構成します。
、暗黙のアサーション - アサート(例外はスローされません)がしばしばあります。 –
単純なアプローチは、テストの数だけでなくテストメソッドで使用されるアサートも印刷できるアサートカウンタをサポートするJUnitとTestNGでした。
私はすべてのメソッドをオーバーライドし、カウンターを持っているAssertクラスのラッパーを書かれている。..
あなたはまた、IntelliJのの構造サーチ
よろしくを使用しようとすることができ、 Nagendraもちろん
- 1. カスタムJUnitアサーションのテストを書くには?
- 2. Junit 3、Junit 4、TestNG
- 3. JUnitアサーション拡張
- 4. JUnitのアサーション
- 5. Junit:アサーション未満ですか?
- 6. TestNG、Junit and log4j
- 7. jUnitと比較したTestNGの欠点?
- 8. PowerMockito.whenNew()はJunitテストでうまく動作しますが、TestNgテストでは機能しません。
- 9. テスト環境でjunit/TestNGテストケースを実行する方法はありますか?
- 10. JUnitとTestNGテストを正常に実行するにはどうすればいいですか?
- 11. Difference b/w Mockito、junit、TestNG
- 12. TestNG @BeforeTest相当のJUnit
- 13. cucumber、selenium、maven、junitでTestNGを使用してクロスブラウザー(マルチブラウザー)テストを実行するにはヘルプが必要
- 14. JUnitテストを実行しようとするTestNGなしで、MavenプロジェクトでJUnitとTestNGの両方を実行するにはどうすればいいですか?
- 15. Selenium-Jenkins IntegrationにはTestNGまたはJUnit Frameworkが必要です
- 16. 変数なしのJUnitテスト
- 17. Androidスタジオでテスト中:NoClassDefFoundError:org/testng/TestNG
- 18. @AutowiredとUnsatisfiedDependencyExceptionは、JUnitテスト
- 19. Maven.surefire.util.SurefireReflectionException Junitテストをテストするとき
- 20. 春のJUnitテスト - 整数のためのJSONPath私の春のために、私は私のJUnitテストでは、次のアサーションを持って
- 21. TestNGはどのようにテストクラスを探しますか?
- 22. Testngテストとして実行してtestngファイルを実行できません
- 23. Arquillian JUnitテストは
- 24. junitテストでAutowireが動作しない
- 25. JUnitテストで
- 26. ランタイムでTestNgテストをスキップ
- 27. Jmeterユーザごとに異なるアサーションをテストする方法
- 28. jUnitでデータディレクトリをテスト
- 29. JUnitテストはにAroundInvokeインターセプタは
- 30. 春のセキュリティ、JUnitの:春MockMVCとJUnitテストでは@Before
私は既にテストコードを反映したものを持っており、どのテストメソッドが実行されているのかを把握しています(どのテストが実行されていないのかわかります)。 "javap -c"の出力は、どのテストにアサーションがあるかを知るのに役立ちます(古い方法では、 'Assert.fail'への呼び出しがあり、アサーションは新しい方法で呼び出されます) 'ExpectedException.expect'の呼び出しがあります)。 これは、少なくとも直接アサーションを持つテストでは間接的アサーションでは機能しません。とにかくアサーションは直接的でなければなりません。 –