Skip to content

Latest commit

 

History

History
64 lines (39 loc) · 2.27 KB

README.md

File metadata and controls

64 lines (39 loc) · 2.27 KB

trial-evosuite-jacoco-cli

What's this?

  • EvoSuiteでテストを生成する
  • JaCoCoでEvoSuiteで生成したテストの実行情報を得る

How to use

$ ./run.sh [ instrument | non-instrument ]

やっていること

  • ソースコンパイル

  • EvoSuiteでテスト生成

  • JaCoCoを使いながらJUnitでテスト実行.実行情報を取得

    • 引数 instrument / non-instrumentで取得方法を変更可能(詳しくは下)
  • report作成(今回はHTML)

解説

EvoSuiteのテストは,独自のクラスローダを利用するためJaCoCoのJava agentのみを使った方法が利用できない(出力されるカバレッジが常に0%になる).

実行情報を取得するための方法が2通りある.

  1. JaCoCoのOffline Instrumentationを利用する.
  2. EvoSuite独自のクラスローダを利用しない.

1. Offline Instrumentation

run.shinstrument()が対応.

Instrumentedのクラスファイルを作って,JUnitにそれを指定して実行すれば良い.

ただし結局Java agentの指定は必要な模様.

公式ドキュメントではPre-instrumentedなクラスは除外しろといっているが,特に何も起きない.

2. 独自のクラスローダを利用しない

run.shnon-instrument()が対応.

EvoSuiteが生成したテストクラスの内容を一部変更する.

separateClassLoaderfalseに設定する.

- @RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, separateClassLoader = true) 
+ @RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, separateClassLoader = false) 

あとはコンパイルして実行すれば良い.

この場合,JUnitテストの実行にはevosuite本体が必要なことに注意.

参考