суббота, 15 марта 2014 г.

Running tests with JMockit

Моменты с JDK

JMockit можно запускать под JDK 1.5+. Тестировать можно код написанный под любой JDK.

По разному запускаются тесты для JDK 1.5 и JDK 1.6+.

В случае JDK 1.5 нам нужно подключать JMockit как агент: -javaagent:/proper/path/jmockit.jar

В JDK 1.6+ достаточно чтобы JMockit просто был в класспазе.



JUnit & TestNG

Есть тонкость запуска также для JUnit. В этом случае нам нужно побеспокоиться чтобы джарник JMockit был обязательно в класспасе перед джарником JUnit.

Для TestNG 6.2+  это не обязательно. Для версий ниже опятьже jmockit.jar нужно подключать как агент.

Apache Ant конспект

Очень важно в вызове junit таска ипользовать отдельную инстанцию JVM.
<junit fork="yes" forkmode="once" dir="directoryContainingJars">
   <!-- If needed (eg, when running on JDK 1.5), uncomment the following JVM argument:
   <jvmarg value="-javaagent:jmockit.jar"/> -->

   <classpath path="jmockit.jar"/>

   <!-- To generate (if desired) a code coverage HTML report: -->
   <classpath path="jmockit-coverage.jar"/>

   <!-- Additional classpath entries, including the appropriate junit.jar -->

   <batchtest>
      <!-- filesets specifying the desired test classes -->
   </batchtest>
</junit> 

Apache Maven

Все просто, только в случае junit нужно не забывать зависимость джеймокит размещать до зависимости на джейюнит.
<properties>
   <jmockit.version>desired version</jmockit.version>
</properties>

<dependencies>
   <dependency>
      <groupId>com.googlecode.jmockit</groupId><artifactId>jmockit</artifactId>
      <version>${jmockit.version}</version><scope>test</scope>
   </dependency>
</dependencies>

Если же у нас JDK 1.5 или мы тестируем TestNG 6.2- то нужно не забыть плагин для тестирования настроить на директиву с агентом:
<plugin>
   <artifactId>maven-surefire-plugin</artifactId>
   <configuration>
     <argLine>
       -javaagent:"${settings.localRepository}"/com/googlecode/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
     </argLine>
   </configuration>
</plugin>

Комментариев нет:

Отправить комментарий