1つのチームのIaaS InfoboxCloudのJava 8。 テストではJava 8を使用します

最近、Java 8がリリースされましたが、これはJVMプラットフォームのすべての開発者にとって待望の素晴らしいイベントであり、エンタープライズプロジェクトのコードに確実に影響を与えます。



InfoboxCloudの私たちはJavaテクノロジーを本当に愛し、Java開発者を大切にしています。 Java 8のリリースでは、1つのコマンドで任意のLinux OSのInfoboxCloudクラウドインフラストラクチャにJRE 8またはJDK 8をインストールできるスクリプトを作成しました。 スクリプトを選択し、コンソールに貼り付けてEnterを押すだけです。 Javaをインストールするよりも、良いコードを書くことに時間を費やす方がはるかに優れています。

Java 8 InfoboxCloud IaaS

InfoboxCloud Jelastic Cloud Platformでは、 Java 8のサポートが次のソフトウェアスタックアップデートで間もなく登場します。



この記事では、Java 8をインストールした後、Java 8で開発ソフトウェアをテストし、Java 7でビルドする方法を説明します。





1つのコマンドでJava 8をインストールする



適切なバージョンのJavaをインストールするには、InfoboxCloudクラウドインフラストラクチャマシンにログインして、指定されたコマンドを貼り付けるだけです。 もちろん、スクリプトにはベンダーロックはなく、サーバーで使用できますが、InfoboxCloudでテストされています。 CentOS 6、Ubuntu 12.04、Ubuntu 13.10、Debian 7、i686およびx86_64用のopenSuse 13.1を搭載したマシンでテスト済み。



Jdk 8


wget repository.jelasticloud.com/scripts/jvm/8/jdk8 && chmod +x jdk8 && ./jdk8 && rm -rf jdk8
      
      







JRE 8


 wget repository.jelasticloud.com/scripts/jvm/8/jre8 && chmod +x jre8 && ./jre8 && rm -rf jre8
      
      







1つのコマンドでJava 7をインストールする



もちろん、JDK7とJRE7の両方が本番環境で長期間使用されることを理解しているため、Java 7の1つのコマンドでインストールスクリプトを準備しました。

Java 7とJava 8は並行してインストールできます。最初に7をインストールし、次に8をインストールすることをお勧めします。



JDK 7アップデート51


 wget repository.jelasticloud.com/scripts/jvm/7u51/jdk7u51 && chmod +x jdk7u51 && ./jdk7u51 && rm -rf jdk7u51
      
      







JRE 7アップデート51


 wget repository.jelasticloud.com/scripts/jvm/7u51/jre7u51 && chmod +x jre7u51 && ./jre7u51 && rm -rf jre7u51
      
      







Java 8でテストを作成し、Java 7でアプリケーションコードを作成しています



Java 8は完全に新しいものです。 最終的に企業が品質に自信を持つようになるには、さらに多くの更新が必要になります。 ただし、現時点では、Java 8でテストを記述し、Java 7でアプリケーションコードを記述できます。

Maven Compilerプラグインは、コンパイルとtestCompileの2つのモードで起動します。 これらは個別に構成できます。



次のセクションをpomファイルに追加します。

 <properties> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.testTarget>1.8</maven.compiler.testTarget> <maven.compiler.testSource>1.8</maven.compiler.testSource> </properties>
      
      





これで、src / main / javaはjava 7でコンパイルされ、src / main / testは8でコンパイルされます。



プロジェクトの親pomを構成した場合、その構成を再ロードする必要があります。





habrahabrがmavenコードのソースタグを誤って解釈するため、このコードフラグメントには画像がロードされています。 Github Gistはここから入手できます



これで、JDK8を使用してプロジェクトをテストできます。 他の開発者に、プロジェクト全体のレベルをテストで使用するレベルに上げるように伝えたい場合があります。

ビルドセクションに追加します。

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.3.1</version> <executions> <execution> <id>enforce-java</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>${maven.compiler.testTarget}</version> </requireJavaVersion> </rules> </configuration> </execution> </executions> </plugin>
      
      





7でプロジェクト自体をコンパイルしても、コンパイラは7と8のAPIの違いを理解しないことに注意してください。これは、src / main / javaでAPI 8を使用してもプロジェクトが正常にコンパイルされることを意味します。そのような状況を防ぐ:

 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>animal-sniffer-maven-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>signature-check</id> <phase>verify</phase> <goals> <goal>check</goal> </goals> </execution> </executions> <configuration> <signature> <groupId>org.codehaus.mojo.signature</groupId> <artifactId>java17</artifactId> <version>1.0</version> </signature> </configuration> </plugin>
      
      





プロジェクトが正常に構成されました。 テストでJDK8を使用してみましょう。



ソースパッケージjdk 7をダウンロードします。



 import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable; public class DoSomething { public String execute(Callable<String> call) throws Exception { return call.call(); } public List<String> list() { return Arrays.asList("a", "b", "c", "d"); } }
      
      







JDK 8でのテスト:



 import java.util.Optional; import org.junit.Assert; import org.junit.Test; public class DoSomethingTestClase { public static final String TEST = "ABCD"; @Test public void shouldReturnString() throws Exception { String result = new DoSomething().execute(()-> TEST); Assert.assertEquals(TEST, result); } @Test public void shouldFilterResult() throws Exception { Optional<String> result = new DoSomething().list() .stream() .map((a)-> a.toUpperCase()) .reduce((a, b)->a+b); Assert.assertTrue(result.isPresent()); Assert.assertEquals(TEST, result.get()); } }
      
      





JDK8 Aslak Knutsenでこのようなテストを行うアイデアをありがとう。



InfoboxCloudでのプログラミングの成功!



All Articles