EvoSuite Mavenプラグインの使い方

2023/04/10に公開

EvoSuiteのMavenプラグインの使い方についての備忘録.

参考:https://www.evosuite.org/documentation/maven-plugin/

pom.xmlへプラグイン追加

Mavenプロジェクトのpom.xmlにEvoSuiteのMavenプラグインを追加する.

<pluginManagement>
<plugins>
   <plugin>
      <groupId>org.evosuite.plugins</groupId>
      <artifactId>evosuite-maven-plugin</artifactId>
      <version>${evosuiteVersion}</version>
      <executions><execution>
         <goals> <goal> prepare </goal> </goals>
         <phase> process-test-classes </phase>
      </execution></executions>
  </plugin>
</plugins>
</pluginManagement>

次に,EvoSuiteのバージョンを指定するプロパティevosuiteVersionを追加する.

<properties>
   <evosuiteVersion>1.0.6</evosuiteVersion>
</properties>

EvoSuiteの最新版はv1.2.0なのだが,残念ながらMavenプラグインではv1.0.6までしか提供されていない.
最新版を使いたい人はパッケージ版を使おう.

単体テストの実行に使うjunitはv4.12以降が必要.
dependencyjunitversionがv4.12以降になっているのを確認しておく.

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

利用可能なゴール

evosuite:generate

EvoSuiteでテストケースを生成する.
生成対象は全サブモジュール内の全クラス.

生成されたテストクラスは.evosuite/ディレクトリに保存される.
プロジェクトのtestディレクトリ(例えばsrc/test/java/)に移動したい場合は,evosuite:generateを実行した後,evosuite:export(説明は後述)を実行する必要がある.

事前にコードをコンパイルしておく必要がある.
以下のコマンドを実行すればコンパイルとテストケース生成を同時に実行できる:

mvn compile evosuite:generate

利用可能なパラメータは以下の通り:

パラメータ名 説明 デフォルト値
memoryInMB EvoSuiteに事前に割り当てられるメモリ量(単位はMB) 800
cores EvoSuiteが利用できるCPUコア数 1
timeInMinutesPerClass EvoSuiteがテスト生成に費やせるクラスあたりの時間(単位は分) 2

evosuite:info

これまでに生成されたテストの各種情報を出力する.

evosuite:export

生成されたテストをtargetFolderパラメータで指定されたディレクトリにコピーする.

パラメータ名 説明 デフォルト値
targetFolder テストのコピー先となるディレクトリ src/test/java/

使用例

例えば

mvn -DmemoryInMB=2000 -Dcores=2 evosuite:generate evosuite:export test

を実行すると,

  • EvoSuiteに2000MBのメモリと2つのコアを割り当てた状態で,
  • テストケースを生成し,
  • 生成されたテストをsrc/test/java/へコピーして,
  • テストを実行

してくれる.

Discussion