Статьи

Тестирование производственного кода JDK 1.4 с использованием тестов Java 5 в Maven

Java 5 знаменует собой огромный шаг вперед в области автоматизированного тестирования. Например, JUnit 4 представляет множество новых мощных функций, основанных на аннотациях, таких как гибкие имена тестов и параметризованное тестирование. TestNG имеет очень классные функции, основанные на аннотациях с момента его первого выпуска. И Selenium 2.0 / WebDriver также имеет несколько замечательных новых функций, основанных на аннотациях, которые значительно упрощают создание объектов Page.

Однако все еще есть те из нас, кому, как правило, по независящим от нас причинам, необходимо развертываться в среде на основе Java 1.4. Итак, вы застряли с инструментами доисторического модульного тестирования и практикой доисторического тестирования? Ответ — нет — даже при развертывании на архаичной JVM вы все равно можете использовать эти новые функции для своих тестов. Любопытно? Читать дальше!

На самом деле, это не так уж сложно, если вы знаете, как. Первое, что вам нужно сделать, это настроить параметры компилятора для каждой фазы, чтобы убедиться, что исходный код вашего приложения скомпилирован для Java 1.4, а ваш тестовый код для Java 1.5. Это не так сложно: вы можете сделать это, настроив плагин maven-compiler-plugin, как показано здесь:

<project...>
  <build>
    ...
	<plugins>
	  <plugin>
	    <groupId>org.apache.maven.plugins</groupId>
	    <artifactId>maven-compiler-plugin</artifactId>
	    <version>2.3.1</version>
	    <executions>
	      <execution>
	        <id>java-1.4-compile</id>
	        <phase>compile</phase>
	        <goals>
	          <goal>compile</goal>
	        </goals>
	        <configuration>
	          <source>1.4</source>
	          <target>1.4</target>
	        </configuration>
	      </execution>
	      <execution>
	        <id>java-1.5-compile</id>
	        <phase>process-test-sources</phase>
	        <goals>
	          <goal>testCompile</goal>
	        </goals>
	        <configuration>
	          <source>1.5</source>
	          <target>1.5</target>
	        </configuration>
	      </execution>
	    </executions>
	  </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

Это гарантирует, что код вашего приложения не будет компилироваться, если какие-либо обобщенные элементы, перечисления или другие функции Java 5 будут добавлены, но все же позволит вам использовать все эти функции в тестовом коде.

Это здорово, но мы еще не закончили. Есть еще некоторые тонкие опасности. Например, класс String ввел метод contains () в Java 5. Однако, с помощью описанной выше конфигурации, если вы используете этот метод, ваш код все равно будет компилироваться, но он не будет работать в среде Java 1.4.

Ответ приходит в форме несколько странно названного animal-sniffer-maven-plugin . Плагин Animal Sniffer позволяет вам проверять ваш код на соответствие сигнатуре данного API и, в частности, на соответствие API конкретных версий JDK. Если вы хотите убедиться, что ваш код работает на Java 1.4, вам просто нужно добавить следующую конфигурацию плагина в раздел сборки:


<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<version>1.6</version>
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
<artifactId>java14</artifactId>
<version>1.0</version>
</signature>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>


Плагин animal-sniffer-maven-plugin принимает такие значения, как java13 , java14 , java15 или java16 . Вы также можете быть более точным, если требуется — например, java15-sun или java14-ibm .

Итак, если вы хотите опробовать новые и классные функции на основе аннотаций многих современных автоматизированных сред тестирования, но при этом все же необходимо развернуть их на допотопной JVM в рабочей среде, теперь вы можете!

Если вы хотите узнать больше об уловках автоматизации сборки Maven и обалденных методах автоматизированного тестирования, обязательно ознакомьтесь с предстоящими загрузочными лагерями Java Power Tools , которые скоро появятся в Веллингтоне , Лондоне и Канберре .

 

От http://weblogs.java.net/blog/johnsmart/archive/2010/08/02/testing-jdk-14-production-code-using-java-5-test-maven